--- /dev/null
+#
+# Arc Distance filter
+#
+rm -f ${TMPDIR}/arcdist.txt
+gpsbabel -i xmap -f ${REFERENCE}/arcdist_input.txt \
+ -x arc,file=${REFERENCE}/arcdist_arc.txt,distance=1 \
+ -o xmap -F ${TMPDIR}/arcdist.txt
+compare ${REFERENCE}/arcdist_output.txt ${TMPDIR}/arcdist.txt
+
--- /dev/null
+#
+# Dell Axim Navigation System 'axim_gpb' test
+#
+rm -f ${TMPDIR}/axim-*
+gpsbabel -i axim_gpb -f ${REFERENCE}/track/axim-sample.gpb -o gpx -F ${TMPDIR}/axim-sample.gpx
+compare ${REFERENCE}/track/axim-sample.gpx ${TMPDIR}/axim-sample.gpx
+
--- /dev/null
+#
+# cet - Character encoding transformation tests
+#
+rm -f ${TMPDIR}/cet-sample*
+gpsbabel -w -i gdb -f ${REFERENCE}/cet/cet-sample.gdb -o gpx -F ${TMPDIR}/cet-sample.gpx
+compare ${REFERENCE}/cet/cet-sample.gpx ${TMPDIR}/cet-sample.gpx
+gpsbabel -w -i gpx -f ${TMPDIR}/cet-sample.gpx -o tmpro -c Latin1 -F ${TMPDIR}/cet-sample.latin1.txt
+compare ${REFERENCE}/cet/cet-sample.latin1.txt ${TMPDIR}/cet-sample.latin1.txt
+gpsbabel -w -i gdb -f ${REFERENCE}/cet/cet-sample.gdb -o tmpro -c Latin2 -F ${TMPDIR}/cet-sample.latin2.txt
+compare ${REFERENCE}/cet/cet-sample.latin2.txt ${TMPDIR}/cet-sample.latin2.txt
+gpsbabel -w -i gdb -f ${REFERENCE}/cet/cet-sample.gdb -o tmpro -c cp1250 -F ${TMPDIR}/cet-sample.cp1250.txt
+compare ${REFERENCE}/cet/cet-sample.cp1250.txt ${TMPDIR}/cet-sample.cp1250.txt
+gpsbabel -w -i gdb -f ${REFERENCE}/cet/cet-sample.gdb -o tmpro -c macroman -F ${TMPDIR}/cet-sample.macroman.txt
+compare ${REFERENCE}/cet/cet-sample.macroman.txt ${TMPDIR}/cet-sample.macroman.txt
+
# Magellan serial
# TODO
-# CSV (Comma separated value) data.
-
-gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o csv -F ${TMPDIR}/csv.csv
-gpsbabel -i csv -f ${TMPDIR}/csv.csv -o csv -F ${TMPDIR}/csv2.csv
-compare ${TMPDIR}/csv2.csv ${TMPDIR}/csv.csv
-# And the alternate command line version.
-gpsbabel -i csv -o gpx ${TMPDIR}/csv.csv ${TMPDIR}/csv3.gpx
-gpsbabel -i gpx -o csv ${TMPDIR}/csv3.gpx ${TMPDIR}/csv4.csv
-compare ${TMPDIR}/csv.csv ${TMPDIR}/csv4.csv
-
-#
-# Delorme TopoUSA 4 is a CSV strain.
-#
-rm -f ${TMPDIR}/xmap-1.gpx ${TMPDIR}/xmap-2.gpx ${TMPDIR}/xmap
-gpsbabel -i xmap -f ${REFERENCE}/xmap -o xmap -F ${TMPDIR}/xmap
-gpsbabel -i xmap -f ${REFERENCE}/xmap -o gpx -F ${TMPDIR}/xmap-1.gpx
-gpsbabel -i xmap -f ${TMPDIR}/xmap -o gpx -F ${TMPDIR}/xmap-2.gpx
-compare ${TMPDIR}/xmap-1.gpx ${TMPDIR}/xmap-2.gpx
-compare ${REFERENCE}/xmap ${TMPDIR}/xmap
-
-# Navitrak DNA marker format
-gpsbabel -i dna -f ${REFERENCE}/dnatest.txt -o dna -F ${TMPDIR}/dnatest.txt
-compare ${REFERENCE}/dnatest.txt ${TMPDIR}/dnatest.txt
-
-# PSP (PocketStreets 2002 Pushpin (.PSP)) file format. Use mxf as an
-# intermediate format to avoid binary FP anomalies on compareerent platforms.
-rm -f ${TMPDIR}/psp.mxf ${TMPDIR}/mxf.psp
-gpsbabel -i psp -f ${REFERENCE}/ps.psp -o mxf -F ${TMPDIR}/psp.mxf
-gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o mxf -F ${TMPDIR}/mxf.psp
-compare ${TMPDIR}/psp.mxf ${TMPDIR}/mxf.psp
-gpsbabel -i psp -f ${REFERENCE}/ps.psp -o gpx -F ${TMPDIR}/psp1.gpx
-gpsbabel -i psp -f ${REFERENCE}/ps.psp -o psp -F ${TMPDIR}/xxx.psp
-gpsbabel -i psp -f ${TMPDIR}/xxx.psp -o gpx -F ${TMPDIR}/psp2.gpx
-compare ${TMPDIR}/psp1.gpx ${TMPDIR}/psp2.gpx
-
-# MXF (Maptech Exchange Format) file format
-rm -f ${TMPDIR}/mx.mxf ${TMPDIR}/mxf.mxf
-gpsbabel -i mxf -f ${REFERENCE}/mxf.mxf -o mxf -F ${TMPDIR}/mx.mxf
-gpsbabel -i mxf -f ${TMPDIR}/mx.mxf -o mxf -F ${TMPDIR}/mxf.mxf
-compare ${TMPDIR}/mxf.mxf ${REFERENCE}
-
-# tmpro (TopoMapPro Places) file format
-rm -f ${TMPDIR}/topomappro.txt ${TMPDIR}/mxf.mxf
-gpsbabel -i tmpro -f ${REFERENCE}/topomappro.txt -o tmpro -F ${TMPDIR}/tmp.txt
-gpsbabel -i tmpro -f ${TMPDIR}/tmp.txt -o tmpro -F ${TMPDIR}/topomappro.txt
-compare ${TMPDIR}/topomappro.txt ${REFERENCE}
-
# TPG (NG Topo!) file format
# This is hard to test as the datum conversions create minute
# inconsistencies in the coordinates. So.. we test our i/o
compare ${TMPDIR}/gpspil_t.gpu ${TMPDIR}/gpspilot.gpu
compare ${REFERENCE}/gu.wpt ${TMPDIR}/gpspilot.gpu
-# QuoVadis GPS for PalmOS
-# This test is derived from the Cetus test.
-rm -f ${TMPDIR}/quovadis.pdb ${TMPDIR}/quovadis.gpu ${TMPDIR}/quovadist.gpu
-gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o quovadis -F ${TMPDIR}/quovadis.pdb
-gpsbabel -i quovadis -f ${TMPDIR}/quovadis.pdb -o gpsutil -F ${TMPDIR}/quovadis.gpu
-gpsbabel -i quovadis -f ${REFERENCE}/quovadis.pdb -o gpsutil -F ${TMPDIR}/quovadist.gpu
-compare ${TMPDIR}/quovadist.gpu ${TMPDIR}/quovadis.gpu
-compare ${REFERENCE}/quovadis.gpu ${TMPDIR}/quovadis.gpu
-
-# GpsDrive
-rm -f ${TMPDIR}/gpsdrive.txt
-gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o gpsdrive -F ${TMPDIR}/gpsdrive.txt
-compare ${TMPDIR}/gpsdrive.txt ${REFERENCE}
-gpsbabel -i gpsdrive -f ${REFERENCE}/gpsdrive.txt -o gpsdrive -F ${TMPDIR}/gpsdrive2.txt
-compare ${REFERENCE}/gpsdrive.txt ${TMPDIR}/gpsdrive2.txt
-
# XMapHH Street Atlas USA file format
rm -f ${TMPDIR}/xmapwpt.wpt ${TMPDIR}/xmapwpt.xmapwpt
gpsbabel -i xmapwpt -f ${REFERENCE}/xmapwpt.wpt -o xmapwpt -F ${TMPDIR}/xmapwpt.xmapwpt
gpsbabel -i xmapwpt -f ${TMPDIR}/xmapwpt.xmapwpt -o xmapwpt -F ${TMPDIR}/xmapwpt.wpt
compare ${TMPDIR}/xmapwpt.wpt ${REFERENCE}
-# XCSV
-# Test that we can parse a style file, and read and write data in the
-# same xcsv format (a complete test is virtually impossible).
-echo "RECORD_DELIMITER NEWLINE" > ${TMPDIR}/testo.style
-echo "FIELD_DELIMITER COMMA" >> ${TMPDIR}/testo.style
-echo "BADCHARS COMMA" >> ${TMPDIR}/testo.style
-echo "PROLOGUE Header" >> ${TMPDIR}/testo.style
-echo "EPILOGUE Footer" >> ${TMPDIR}/testo.style
-echo "IFIELD SHORTNAME,,%s" >> ${TMPDIR}/testo.style
-echo "IFIELD LAT_DIRDECIMAL,,%c%lf" >> ${TMPDIR}/testo.style
-echo "IFIELD LON_DECIMALDIR,,%lf%c" >> ${TMPDIR}/testo.style
-rm -f ${TMPDIR}/xcsv.geo ${TMPDIR}/xcsv.xcsv
-gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o xcsv,style=${TMPDIR}/testo.style -F ${TMPDIR}/xcsv.geo
-gpsbabel -i xcsv,style=${TMPDIR}/testo.style -f ${TMPDIR}/xcsv.geo -o xcsv,style=${TMPDIR}/testo.style -F ${TMPDIR}/xcsv.xcsv
-compare ${TMPDIR}/xcsv.geo ${TMPDIR}/xcsv.xcsv
-
# Garmin Mapsource This is a binary format with some undocumented
# fields. This test is therefore intentionally vague. We read a file,
# convert it to GPX, then write a file as MPS, then read it back and
gpsbabel -t -i mapsource -f ${REFERENCE}/route/route.mps -o mapsource,mpsverout=3 \
-F ${TMPDIR}/mps-route.mps
compare ${REFERENCE}/mps-empty.mps ${TMPDIR}/mps-route.mps
-
-#
-# Geocaching Database is a binary Palm format that, like the GPX variants
-# has a zillion "equivalent" encodings of any given record set. So we
-# read the reference file, spin it to GPX and back to GCDB and then spin
-# that one to GPX.
-#
-
-gpsbabel -i gcdb -f ${REFERENCE}/GeocachingDB.PDB -o gpx -F ${TMPDIR}/gcdb1.gpx \
- -o gcdb -F ${TMPDIR}/gcdb1.pdb
-gpsbabel -i gpx -f ${TMPDIR}/gcdb1.gpx -o gpx -F ${TMPDIR}/gcdb2.gpx
-compare ${TMPDIR}/gcdb1.gpx ${TMPDIR}/gcdb1.gpx
-
-#
-# Duplicate filter - Since filters have no format of their own, we use csv
-# as an intermediate format for testing the filter.
-#
-rm -f ${TMPDIR}/filterdupe.csv1 ${TMPDIR}/filterdupe.csv2
-gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o csv -F ${TMPDIR}/filterdupe.csv1
-gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -f ${REFERENCE}/../geocaching.loc -x duplicate,shortname \
- -o csv -F ${TMPDIR}/filterdupe.csv2
-sort_and_compare ${TMPDIR}/filterdupe.csv1 ${TMPDIR}/filterdupe.csv2
-
-#
-# Position filter - Since very small distances are essentialy a duplicate
-# position filter, we can test very similarly to the duplicate filter.
-#
-rm -f ${TMPDIR}/filterpos.csv1 ${TMPDIR}/filterpos.csv2
-gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o csv -F ${TMPDIR}/filterpos.csv1
-gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -f ${REFERENCE}/../geocaching.loc -x position,distance=5f \
- -o csv -F ${TMPDIR}/filterpos.csv2
-sort_and_compare ${TMPDIR}/filterpos.csv1 ${TMPDIR}/filterpos.csv2
-
-#
-# Radius filter
-#
-rm -f ${TMPDIR}/radius.csv
-gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc \
- -x radius,lat=35.9720,lon=-87.1347,distance=14.7 \
- -o csv -F ${TMPDIR}/radius.csv
-compare ${TMPDIR}/radius.csv ${REFERENCE}
-
#
# magellan SD card waypoint / route format
#
-F ${TMPDIR}/mapsend.trk
compare ${TMPDIR}/mapsend.trk ${REFERENCE}/track/
-#
-# copilot
-#
-rm -f ${TMPDIR}/copilot.pdb
-gpsbabel -i copilot -f ${REFERENCE}/UKultralight.pdb -o copilot -F ${TMPDIR}/cop.pdb
-gpsbabel -i copilot -f ${REFERENCE}/UKultralight.pdb -o gpx -F ${TMPDIR}/cop1.gpx
-gpsbabel -i copilot -f ${TMPDIR}/cop.pdb -o gpx -F ${TMPDIR}/cop2.gpx
-compare ${TMPDIR}/cop1.gpx ${TMPDIR}/cop2.gpx
-
-#
-# EasyGPS. Another binary format.
-#
-rm -f ${TMPDIR}/easy.loc
-gpsbabel -i easygps -f ${REFERENCE}/easygps.loc -o easygps -F ${TMPDIR}/ez.loc
-gpsbabel -i easygps -f ${REFERENCE}/easygps.loc -o gpx -F ${TMPDIR}/ez1.gpx
-gpsbabel -i easygps -f ${TMPDIR}/ez.loc -o gpx -F ${TMPDIR}/ez2.gpx
-compare ${TMPDIR}/ez1.gpx ${TMPDIR}/ez2.gpx
-
#!/bin/sh
-
-#
-# GPilotS. A Palm format. Another binary format that
-#
-# rm -f ${TMPDIR/gpilots.l
-#gpsbabel -i easygps -f ${REFERENCE}/gpilots.pdb -o gpx -F ${TMPDIR}/gp.gpx
-gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o gpilots -F ${TMPDIR}/blah.pdb
-gpsbabel -i gpilots -f ${TMPDIR}/blah.pdb -o gpx -F ${TMPDIR}/1.gpx
-gpsbabel -i gpilots -f ${REFERENCE}/gpilots.pdb -o gpx -F ${TMPDIR}/2.gpx
-compare ${TMPDIR}/1.gpx ${TMPDIR}/2.gpx
-#gpsbabel -i easygps -f ${REFERENCE}/gpilots.pdb -o gpx -F ${TMPDIR}/gp.gpx
-
-#
-# Navicache.
-gpsbabel -i navicache -f ${REFERENCE}/navicache.xml -o gpsutil -F ${TMPDIR}/navi.wpt
-compare ${REFERENCE}/navicache.ref ${TMPDIR}/navi.wpt
-#
-
-#
-# CoastalExplorer..
-gpsbabel -r -i coastexp -f ${REFERENCE}/coastexp.nob -o gpx -F ${TMPDIR}/coastexp.gpx
-compare ${REFERENCE}/coastexp.ref ${TMPDIR}/coastexp.gpx
-gpsbabel -r -i gpx -f ${TMPDIR}/coastexp.gpx -o coastexp -F ${TMPDIR}/coastexp.nob
-compare ${REFERENCE}/coastexp.ref2 ${TMPDIR}/coastexp.nob
-gpsbabel -w -i coastexp -f ${REFERENCE}/coastexp.nob -o gpx -F ${TMPDIR}/coastexp.gpx
-compare ${REFERENCE}/coastexp.ref3 ${TMPDIR}/coastexp.gpx
-gpsbabel -w -i gpx -f ${TMPDIR}/coastexp.gpx -o coastexp -F ${TMPDIR}/coastexp.nob
-compare ${REFERENCE}/coastexp.ref4 ${TMPDIR}/coastexp.nob
-#
-
-# PsiTrex. A text format that can't be handled by XCSV due to context of
-# data based on other data values in the file
-# Waypoints first
-rm -f ${TMPDIR}/psit-ww.txt ${TMPDIR}/psit-ww.mps
-gpsbabel -i psitrex -f ${REFERENCE}/psitwpts.txt -o mapsource -F ${TMPDIR}/psit-ww.mps
-gpsbabel -i mapsource -f ${TMPDIR}/psit-ww.mps -o psitrex -F ${TMPDIR}/psit-ww.txt
-compare ${REFERENCE}/psitwpts.txt ${TMPDIR}/psit-ww.txt
-
-# Now test correct "empty" handling - ask for routes when there aren't any
-# Uses mapsource as the empty handling for this has already happened above
-rm -f ${TMPDIR}/psit-wr.mps
-gpsbabel -r -i psitrex -f ${REFERENCE}/psitwpts.txt -o mapsource,mpsverout=3 -F ${TMPDIR}/psit-wr.mps
-compare ${REFERENCE}/mps-empty.mps ${TMPDIR}/psit-wr.mps
-
-# Routes next
-rm -f ${TMPDIR}/psit-rr.txt ${TMPDIR}/psit-rr.mps
-gpsbabel -r -i psitrex -f ${REFERENCE}/route/psitrtes.txt -o mapsource -F ${TMPDIR}/psit-rr.mps
-gpsbabel -r -i mapsource -f ${TMPDIR}/psit-rr.mps -o psitrex -F ${TMPDIR}/psit-rr.txt
-compare ${REFERENCE}/route/psitrtes.txt ${TMPDIR}/psit-rr.txt
-
-# Now test correct "empty" handling - ask for tracks when there aren't any
-# Uses mapsource as the empty handling for this has already happened above
-rm -f ${TMPDIR}/psit-rt.mps
-gpsbabel -t -i psitrex -f ${REFERENCE}/route/psitrtes.txt -o mapsource,mpsverout=3 -F ${TMPDIR}/psit-rt.mps
-compare ${REFERENCE}/mps-empty.mps ${TMPDIR}/psit-rt.mps
-
-# Tracks last
-rm -f ${TMPDIR}/psit-tt.txt ${TMPDIR}/psit-tt.mps
-gpsbabel -t -i psitrex -f ${REFERENCE}/track/psittrks.txt -o mapsource -F ${TMPDIR}/psit-tt.mps
-gpsbabel -t -i mapsource -f ${TMPDIR}/psit-tt.mps -o psitrex -F ${TMPDIR}/psit-tt.txt
-compare ${REFERENCE}/track/psittrks.txt ${TMPDIR}/psit-tt.txt
-
-# Now test correct "empty" handling - ask for waypoints when there aren't any
-# Uses mapsource as the empty handling for this has already happened above
-rm -f ${TMPDIR}/psit-tw.mps
-gpsbabel -i psitrex -f ${REFERENCE}/track/psittrks.txt -o mapsource,mpsverout=3 -F ${TMPDIR}/psit-tw.mps
-compare ${REFERENCE}/mps-empty.mps ${TMPDIR}/psit-tw.mps
-
-#
-# Arc Distance filter
-#
-rm -f ${TMPDIR}/arcdist.txt
-gpsbabel -i xmap -f ${REFERENCE}/arcdist_input.txt \
- -x arc,file=${REFERENCE}/arcdist_arc.txt,distance=1 \
- -o xmap -F ${TMPDIR}/arcdist.txt
-compare ${REFERENCE}/arcdist_output.txt ${TMPDIR}/arcdist.txt
-
-#
-# Polygon filter
-#
-rm -f ${TMPDIR}/polygon.txt
-gpsbabel -i xmap -f ${REFERENCE}/arcdist_input.txt \
- -x polygon,file=${REFERENCE}/polygon_allencty.txt \
- -o xmap -F ${TMPDIR}/polygon.txt
-compare ${REFERENCE}/polygon_output.txt ${TMPDIR}/polygon.txt
-
-#
-# Simplify filter
-#
-rm -f ${TMPDIR}/simplify.txt
-gpsbabel -r -i gpx -f ${REFERENCE}/route/route.gpx \
- -x simplify,count=10 \
- -o arc -F ${TMPDIR}/simplify.txt
-compare ${REFERENCE}/simplify_output.txt ${TMPDIR}/simplify.txt
-
#
# Route reversal filter. Do it twice and be sure we get what we
# started with.
# Obviously this test should just be rewritten with a new reference.
#compare ${TMPDIR}/reverse1.arc ${TMPDIR}/reverse2.arc
-#
-# Geoniche: No reference file was available, so we created one and just
-# test it against itself.
-#
-rm -f ${TMPDIR}/gn.pdb ${TMPDIR}/1.gpx ${TMPDIR}/2.gpx
-gpsbabel -i geoniche -f ${REFERENCE}/geoniche.pdb -o geoniche -F ${TMPDIR}/gn.pdb
-gpsbabel -i geoniche -f ${REFERENCE}/geoniche.pdb -o gpx -F ${TMPDIR}/1.gpx
-gpsbabel -i geoniche -f ${TMPDIR}/gn.pdb -o gpx -F ${TMPDIR}/2.gpx
-compare ${TMPDIR}/1.gpx ${TMPDIR}/2.gpx
-#
-gpsbabel -i geoniche -f ${REFERENCE}/gn-targets.pdb -o gpx -F ${TMPDIR}/gn-targets.gpx
-compare ${REFERENCE}/gn-targets.gpx ${TMPDIR}/gn-targets.gpx
-
-#
-# saroute covers *.anr, *.rte, and *.rtd, but I only have an .anr for testing.
-# Unfortunately for us, this is a read-only format for now.
-#
-gpsbabel -t -i saroute -f ${REFERENCE}/track/i65.anr -o gpx -F ${TMPDIR}/gpl1.gpx
-gpsbabel -t -i gpx -f ${REFERENCE}/track/i65.anr.gpx -o gpx -F ${TMPDIR}/gpl2.gpx
-compare ${TMPDIR}/gpl1.gpx ${TMPDIR}/gpl2.gpx
-
-#
-# NetStumbler Summary File (read-only)
-#
-rm -f ${TMPDIR}/netstumbler.mps
-gpsbabel -i netstumbler -f ${REFERENCE}/netstumbler.txt -o mapsource -F ${TMPDIR}/netstumbler.mps
-bincompare ${TMPDIR}/netstumbler.mps ${REFERENCE}/netstumbler.mps
-
-#
-# Google Maps XML test
-#
-rm -f ${TMPDIR}/google.out
-gpsbabel -i google -f ${REFERENCE}/google.xml -o csv -F ${TMPDIR}/google.out
-compare ${REFERENCE}/google.csv ${TMPDIR}/google.out
-
-rm -f ${TMPDIR}/google.out
-gpsbabel -i google -f ${REFERENCE}/google.js -o csv -F ${TMPDIR}/google.out
-compare ${REFERENCE}/google.csv ${TMPDIR}/google.out
-
-rm -f ${TMPDIR}/google.out
-gpsbabel -i google -f ${REFERENCE}/google_jan_06.html -o csv -F ${TMPDIR}/google.out
-compare ${REFERENCE}/google_jan_06.csv ${TMPDIR}/google.out
-
-rm -f ${TMPDIR}/google.out
-gpsbabel -i google -f ${REFERENCE}/google_multisegment.js -o gpx -F ${TMPDIR}/google.out
-compare ${REFERENCE}/google_multisegment.gpx ${TMPDIR}/google.out
#
# DeLorme .an1 tests
gpsbabel -i google -f ${REFERENCE}/google.js -o an1 -F ${TMPDIR}/an1.out
bincompare ${TMPDIR}/an1.out ${REFERENCE}/an1-line-out.ref
-#
-# TomTom .ov2 tests
-#
-
-rm -f ${TMPDIR}/ov2.out
-gpsbabel -i arc -f ${REFERENCE}/google.arc -o tomtom -F ${TMPDIR}/ov2.out
-compare ${REFERENCE}/ov2-arc-out.ref ${TMPDIR}/ov2.out
-
-rm -f ${TMPDIR}/ov2.out
-gpsbabel -i geo -f ${REFERENCE}/gl.loc -o tomtom -F ${TMPDIR}/ov2.out
-compare ${REFERENCE}/ov2-geo-out.ref ${TMPDIR}/ov2.out
-
-rm -f ${TMPDIR}/ov2.out
-gpsbabel -i tomtom -f ${REFERENCE}/ov2-geo-out.ref -o gpsutil -F ${TMPDIR}/ov2.out
-compare ${REFERENCE}/ov2-in.ref ${TMPDIR}/ov2.out
#
# XCSV "human readable" tests
#
gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o text -F ${TMPDIR}/text.out -o html -F ${TMPDIR}/html.out -o vcard -F ${TMPDIR}/vcard.out #-o palmdoc -F ${TMPDIR}/pd.out
-#
-# tef "TourExchangeFormat" read test
-#
-rm -f ${TMPDIR}/tef_xml*
-gpsbabel -i tef -f ${REFERENCE}/route/tef_xml.sample.xml -o gpx -F ${TMPDIR}/tef_xml.sample.gpx
-compare ${REFERENCE}/route/tef_xml.sample.gpx ${TMPDIR}/tef_xml.sample.gpx
-
-#
-# PathAway Palm Database .pdb tests
-#
-rm -f ${TMPDIR}/pathaway*
-gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o pathaway,dbname="pathaway-geo" -F ${TMPDIR}/pathaway-geo.pdb
-gpsbabel -i pathaway -f ${TMPDIR}/pathaway-geo.pdb -o geo -F ${TMPDIR}/pathaway-geo.loc
-compare ${REFERENCE}/pathaway-geo.loc ${TMPDIR}/pathaway-geo.loc
-rm -f ${TMPDIR}/pathaway*
-gpsbabel -t -i pathaway -f ${REFERENCE}/track/pathaway.pdb -o gpx -F ${TMPDIR}/pathaway.gpx
-compare ${REFERENCE}/track/pathaway.gpx ${TMPDIR}/pathaway.gpx
-
-#
-# Garmin GPS Database .gdb tests
-#
-rm -f ${TMPDIR}/gdb-*
-gpsbabel -i gdb,via -f ${REFERENCE}/gdb-sample.gdb -o gpx -F ${TMPDIR}/gdb-sample.gpx
-compare ${REFERENCE}/gdb-sample.gpx ${TMPDIR}/gdb-sample.gpx
-gpsbabel -i gpx -f ${REFERENCE}/gdb-sample.gpx -o gdb,ver=1 -F ${TMPDIR}/gdb-sample.gdb
-gpsbabel -i gdb -f ${TMPDIR}/gdb-sample.gdb -o gpx -F ${TMPDIR}/gdb-sample_v2.gpx
-gpsbabel -i gdb,via -f ${REFERENCE}/gdb-sample-v3.gdb -o gpx -F ${TMPDIR}/gdb-sample_v3.gpx
-compare ${REFERENCE}/gdb-sample.gpx ${TMPDIR}/gdb-sample_v3.gpx
-#
-# Because of Garmin coordinates storage gpx is not good for this test
-# compare ${REFERENCE}/gdb-sample.gpx ${TMPDIR}/gdb-sample_v2.gpx
-
-#
-# Vito Navigator II .smt tests
-#
-rm -f ${TMPDIR}/vitosmt*
-gpsbabel -i vitosmt -f ${REFERENCE}/vitosmt.smt -o gpx -F ${TMPDIR}/vitosmt.gpx
-compare ${REFERENCE}/vitosmt.gpx ${TMPDIR}/vitosmt.gpx
-gpsbabel -t -i vitosmt -f ${REFERENCE}/vitosmt.smt -o gpx -F ${TMPDIR}/vitosmt_t.gpx
-compare ${REFERENCE}/track/vitosmt_t.gpx ${TMPDIR}/vitosmt_t.gpx
-
#
# Map&Guide Motorrad Routenplaner .bcr files test
#
gpsbabel -r -i bcr -f ${TMPDIR}/bcr-sample2.bcr -o gpx -F ${TMPDIR}/bcr-sample2.gpx
compare ${REFERENCE}/route/bcr-sample.gpx ${TMPDIR}/bcr-sample2.gpx
-#
-# cet - Character encoding transformation tests
-#
-rm -f ${TMPDIR}/cet-sample*
-gpsbabel -w -i gdb -f ${REFERENCE}/cet/cet-sample.gdb -o gpx -F ${TMPDIR}/cet-sample.gpx
-compare ${REFERENCE}/cet/cet-sample.gpx ${TMPDIR}/cet-sample.gpx
-gpsbabel -w -i gpx -f ${TMPDIR}/cet-sample.gpx -o tmpro -c Latin1 -F ${TMPDIR}/cet-sample.latin1.txt
-compare ${REFERENCE}/cet/cet-sample.latin1.txt ${TMPDIR}/cet-sample.latin1.txt
-gpsbabel -w -i gdb -f ${REFERENCE}/cet/cet-sample.gdb -o tmpro -c Latin2 -F ${TMPDIR}/cet-sample.latin2.txt
-compare ${REFERENCE}/cet/cet-sample.latin2.txt ${TMPDIR}/cet-sample.latin2.txt
-gpsbabel -w -i gdb -f ${REFERENCE}/cet/cet-sample.gdb -o tmpro -c cp1250 -F ${TMPDIR}/cet-sample.cp1250.txt
-compare ${REFERENCE}/cet/cet-sample.cp1250.txt ${TMPDIR}/cet-sample.cp1250.txt
-gpsbabel -w -i gdb -f ${REFERENCE}/cet/cet-sample.gdb -o tmpro -c macroman -F ${TMPDIR}/cet-sample.macroman.txt
-compare ${REFERENCE}/cet/cet-sample.macroman.txt ${TMPDIR}/cet-sample.macroman.txt
-
-#
-# Garmin logbook. This format has an extra section (lap data with things
-# like heartbeat and calories burned) that we don't know what to do with,
-# so we convert it to gpx, convert it to itself, convert THAT to gpx, and
-# compare those.
-#
-rm -f ${TMPDIR}/glogbook*
-gpsbabel -i glogbook -f ${REFERENCE}/track/garmin_logbook.xml -o gpx -F ${TMPDIR}/glog1.gpx
-gpsbabel -i glogbook -f ${REFERENCE}/track/garmin_logbook.xml -o glogbook -F ${TMPDIR}/glog.xml
-gpsbabel -i glogbook -f ${TMPDIR}/glog.xml -o gpx -F ${TMPDIR}/glog2.gpx
-compare ${TMPDIR}/glog1.gpx ${TMPDIR}/glog2.gpx
-
-#
-# Dop filter test
-#
-OLD_LANG=$LANG
-LANG=C
-rm -f ${TMPDIR}/dop*
-sed '/<hdop>50/d' ${REFERENCE}/dop-test.gpx | gpsbabel -i gpx -f - -o openoffice -F - | sed 's/RPT...//g' > ${TMPDIR}/dop-hdop.ref
-gpsbabel -i gpx -f ${REFERENCE}/dop-test.gpx -x discard,hdop=50 -o openoffice -F - | sed 's/RPT...//g' > ${TMPDIR}/dop-hdop.fil
-compare ${TMPDIR}/dop-hdop.ref ${TMPDIR}/dop-hdop.fil
-sed '/<vdop>50/d' ${REFERENCE}/dop-test.gpx | gpsbabel -i gpx -f - -o openoffice -F - | sed 's/RPT...//g' > ${TMPDIR}/dop-vdop.ref
-gpsbabel -i gpx -f ${REFERENCE}/dop-test.gpx -x discard,vdop=50 -o openoffice -F - | sed 's/RPT...//g' > ${TMPDIR}/dop-vdop.fil
-compare ${TMPDIR}/dop-vdop.ref ${TMPDIR}/dop-vdop.fil
-LANG=$OLD_LANG
-
-#
-# cotoGPS tests
-#
-rm -f ${TMPDIR}/coto*
-# Track reading
-gpsbabel -i coto -f ${REFERENCE}/cototesttrack.pdb -o xcsv,style=${REFERENCE}/cototest.style -F ${TMPDIR}/cototrack.csv
-compare ${REFERENCE}/cototesttrack.csv ${TMPDIR}/cototrack.csv
-# Marker read
-gpsbabel -i coto -f ${REFERENCE}/cototestmarker.pdb -o gpx -F ${TMPDIR}/cotomarker.gpx
-compare ${REFERENCE}/cototestmarker.gpx ${TMPDIR}/cotomarker.gpx
-# Marker write
-gpsbabel -i gpx -f ${REFERENCE}/cototestmarker.gpx -o coto -F ${TMPDIR}/cotomarker.pdb
-# bincompare ${REFERENCE}/cototestmarker.pdb ${TMPDIR}/cotomarker.pdb
-gpsbabel -i coto -f ${TMPDIR}/cotomarker.pdb -o gpx -F ${TMPDIR}/cotomarker.gpx
-compare ${REFERENCE}/cototestmarker.gpx ${TMPDIR}/cotomarker.gpx
-
-#
-# Fugawi test cases
-rm -f ${TMPDIR}/fugawi*
-gpsbabel -i fugawi -f ${REFERENCE}/fugawi.notime.txt -o fugawi -F ${TMPDIR}/fugawi1.txt
-compare ${REFERENCE}/fugawi.ref.txt ${TMPDIR}/fugawi1.txt
-gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o fugawi -F ${TMPDIR}/fugawi2.txt
-compare ${REFERENCE}/fugawi.ref.txt ${TMPDIR}/fugawi2.txt
-gpsbabel -i fugawi -f ${TMPDIR}/fugawi2.txt -o fugawi -F ${TMPDIR}/fugawi3.txt
-compare ${TMPDIR}/fugawi2.txt ${TMPDIR}/fugawi3.txt
-gpsbabel -i fugawi -f ${REFERENCE}/fugawi.time.txt -o fugawi -F ${TMPDIR}/fugawi4.txt
-compare ${REFERENCE}/fugawi.time.ref.txt ${TMPDIR}/fugawi4.txt
-gpsbabel -i gpx -f ${REFERENCE}/track/tracks.gpx -o fugawi -F ${TMPDIR}/fugawi5.txt
-compare ${REFERENCE}/track/fugawi.txt ${TMPDIR}/fugawi5.txt
-
-#
-# IGN Rando tests
-#
-gpsbabel -i ignrando -f ${REFERENCE}/track/ignrando-sample.rdn -o ignrando -F ${TMPDIR}/ignrando-sample.rdn
-gpsbabel -i ignrando -f ${TMPDIR}/ignrando-sample.rdn -o gpx -F ${TMPDIR}/ignrando-sample.gpx
-compare ${REFERENCE}/track/ignrando-sample.gpx ${TMPDIR}/ignrando-sample.gpx
-
gpsbabel -i ignrando -f ${REFERENCE}/track/ignrando-sample.rdn -o ignrando -F ${TMPDIR}/ignrando-sample.rdn
gpsbabel -i ignrando -f ${TMPDIR}/ignrando-sample.rdn -o gpx -F ${TMPDIR}/ignrando-sample.gpx
compare ${REFERENCE}/track/ignrando-sample.gpx ${TMPDIR}/ignrando-sample.gpx
-
-#
-# STMwpp "Suunto Trek Manager" WaypointPlus format tests
-#
-rm -f ${TMPDIR}/stmwpp-*
-gpsbabel -i stmwpp -f ${REFERENCE}/track/stmwpp-track.txt -o gpx -F ${TMPDIR}/stmwpp-track.gpx
-compare ${REFERENCE}/track/stmwpp-track.gpx ${TMPDIR}/stmwpp-track.gpx
-gpsbabel -i stmwpp -f ${REFERENCE}/route/stmwpp-route.txt -o gpx -F ${TMPDIR}/stmwpp-route.gpx
-compare ${REFERENCE}/route/stmwpp-route.gpx ${TMPDIR}/stmwpp-route.gpx
-gpsbabel -i stmwpp -f ${REFERENCE}/route/stmwpp-route.txt -o stmwpp -F ${TMPDIR}/stmwpp-route.txt
-compare ${REFERENCE}/route/stmwpp-route.txt ${TMPDIR}/stmwpp-route.txt
-
#
# Microsoft AutoRoute 2002 test (read-only)
#
gpsbabel -i msroute -f ${REFERENCE}/route/msroute-sample.axe -o gpx -F ${TMPDIR}/msroute-sample.gpx
compare ${REFERENCE}/route/msroute-sample.gpx ${TMPDIR}/msroute-sample.gpx
-#
-# CarteSurTable read test
-#
-rm -f ${TMPDIR}/cst-*
-gpsbabel -i cst -f ${REFERENCE}/route/cst-sample.cst -o gpx -F ${TMPDIR}/cst-sample.gpx
-compare ${REFERENCE}/route/cst-sample.gpx ${TMPDIR}/cst-sample.gpx
-
-#
-# Navigon Mobile Navigator .rte tests
-#
-rm -f ${TMPDIR}/nmn4-sample*
-gpsbabel -i nmn4 -f ${REFERENCE}/route/nmn4-sample.rte -o gpx -F ${TMPDIR}/nmn4-sample.gpx
-compare ${REFERENCE}/route/nmn4-sample.gpx ${TMPDIR}/nmn4-sample.gpx
-gpsbabel -i gpx -f ${REFERENCE}/route/nmn4-sample.gpx -o nmn4 -F ${TMPDIR}/nmn4-sample-out.rte
-compare ${REFERENCE}/route/nmn4-sample-out.rte ${TMPDIR}/nmn4-sample-out.rte
#
# Testing the 'nuketypes' filter is funky.
gpsbabel -i gpx -f ${TMPDIR}/wpts.gpx -f ${TMPDIR}/trks.gpx -f ${TMPDIR}/rtes.gpx -o gpx -F ${TMPDIR}/merged.gpx
compare ${TMPDIR}/alltypes.gpx ${TMPDIR}/merged.gpx
-#
-# Wfff.
-#
-gpsbabel -i wfff -f ${REFERENCE}/wfff.xml -o gpsutil -F ${TMPDIR}/wfff.gpu
-compare ${REFERENCE}/wfff.gpu ${TMPDIR}/wfff.gpu
-
-
-#
-# hiketech tests
-#
-rm -f ${TMPDIR}/hiketech*
-gpsbabel -i gpx -f ${REFERENCE}/expertgps.gpx -o hiketech -F ${TMPDIR}/hiketech.out
-compare ${REFERENCE}/hiketech.ref ${TMPDIR}/hiketech.out
-gpsbabel -i hiketech -f ${REFERENCE}/hiketech.ref -o gpx -F ${TMPDIR}/hiketech.gpx
-compare ${REFERENCE}/hiketech.gpx ${TMPDIR}/hiketech.gpx
-
-#
-# Kartex waypoints and tracks
-#
-rm -f ${TMPDIR}/kartex*
-gpsbabel -i kwf2 -f ${REFERENCE}/waypointsDd.kwf -o kwf2 -F ${TMPDIR}/kartex-1a.kwf
-compare ${REFERENCE}/kartex-out.kwf ${TMPDIR}/kartex-1a.kwf
-# ! different format of coords; this checks LATLON_HUMAN_READABLE !
-gpsbabel -i kwf2 -f ${REFERENCE}/waypointsDMm.kwf -o kwf2 -F ${TMPDIR}/kartex-1b.kwf
-compare ${TMPDIR}/kartex-1a.kwf ${TMPDIR}/kartex-1b.kwf
-#
-gpsbabel -i ktf2 -f ${REFERENCE}/track/trackDd.ktf -o ktf2 -F ${TMPDIR}/kartex-2a.ktf
-compare ${REFERENCE}/track/kartex-out.ktf ${TMPDIR}/kartex-2a.ktf
-# ! different format of coords; this checks LATLON_HUMAN_READABLE !
-gpsbabel -i ktf2 -f ${REFERENCE}/track/trackDMm.ktf -o ktf2 -F ${TMPDIR}/kartex-2b.ktf
-compare ${TMPDIR}/kartex-2a.ktf ${TMPDIR}/kartex-2b.ktf
-
-#
-# Dell Axim Navigation System 'axim_gpb' test
-#
-rm -f ${TMPDIR}/axim-*
-gpsbabel -i axim_gpb -f ${REFERENCE}/track/axim-sample.gpb -o gpx -F ${TMPDIR}/axim-sample.gpx
-compare ${REFERENCE}/track/axim-sample.gpx ${TMPDIR}/axim-sample.gpx
-
#
# WBT-200 tests
#
grep -v time <${TMPDIR}/wbt-201.gpx >${TMPDIR}/wbt-201.gpx2
compare ${REFERENCE}/wbt-201.gpx ${TMPDIR}/wbt-201.gpx2
-#
-# Sportsim style-sheet
-#
-rm -f ${TMPDIR}/sportsim*
-gpsbabel -i gpx -f ${REFERENCE}/expertgps.gpx -x nuketypes,waypoints,routes -o sportsim -F ${TMPDIR}/sportsim.txt
-compare ${REFERENCE}/track/sportsim-sample.txt ${TMPDIR}/sportsim.txt
#
# Suunto SDF
gpsbabel -i gpx -f ${REFERENCE}/expertgps.gpx -x nuketypes,routes,tracks -x transform,rte=wpt,del=y -o gpx -F ${TMPDIR}/transform-ver.gpx
compare ${REFERENCE}/transform-rte.gpx ${TMPDIR}/transform-ver.gpx
-#
-# "Raymarine Waypoint File" tests
-#
-gpsbabel -i raymarine -f ${REFERENCE}/raymarine-sample.rwf -o gpx -F ${TMPDIR}/raymarine-sample.gpx
-compare ${REFERENCE}/raymarine-sample.gpx ${TMPDIR}/raymarine-sample.gpx
-gpsbabel -i gpx -f ${REFERENCE}/expertgps.gpx -o raymarine -F ${TMPDIR}/expertgps.rwf
-compare ${REFERENCE}/expertgps.rwf ${TMPDIR}/expertgps.rwf
-
#
# VITO SmartMap .vtt track file 'vitovtt' test
#
gpsbabel -i vitovtt -f ${REFERENCE}/track/vitovtt-sample.vtt -o gpx -F ${TMPDIR}/vitovtt-sample.gpx
compare ${REFERENCE}/track/vitovtt-sample.gpx ${TMPDIR}/vitovtt-sample.gpx
-#
-# Geogrid Viewer tracklogs
-#
-rm -f ${TMPDIR}/ggv_log*
-gpsbabel -i gdb -f ${REFERENCE}/gdb-sample.gdb -x track,pack -o ggv_log -F ${TMPDIR}/ggv_log-sample.log
-bincompare ${REFERENCE}/track/ggv_log-sample.log ${TMPDIR}/ggv_log-sample.log
-gpsbabel -i ggv_log -f ${REFERENCE}/track/ggv_log-sample.log -o ggv_log -F ${TMPDIR}/ggv_log-sample2.log
-bincompare ${REFERENCE}/track/ggv_log-sample.log ${TMPDIR}/ggv_log-sample2.log
-
-#
-# G7ToWin (read only) test
-#
-gpsbabel -i g7towin -f ${REFERENCE}/expertgps.g7t -o garmin_txt,utc=0 -F ${TMPDIR}/expertgps-g7t.txt
-compare ${REFERENCE}/expertgps-g7t.txt ${TMPDIR}/expertgps-g7t.txt
-
-#
-# TomTom Navigator Places of Interest (.asc)
-#
-gpsbabel -i tomtom_asc -f ${REFERENCE}/tomtom_poi.asc -o tomtom_asc -F ${TMPDIR}/tomtom_poi.asc
-compare ${REFERENCE}/tomtom_poi.asc ${TMPDIR}/tomtom_poi.asc
-
-#
-# TomTom Navigator Itinerary files (.asc)
-#
-gpsbabel -i tomtom_itn -f ${REFERENCE}/route/tomtom_itn.itn -o tomtom_itn -F ${TMPDIR}/tomtom_itn.itn
-compare ${REFERENCE}/route/tomtom_itn.itn ${TMPDIR}/tomtom_itn.itn
-
#!/bin/sh
-#
-# NaviLink waypoints
-#
-gpsbabel -i navilink -f ${REFERENCE}/navilink_waypoints.wpt -o gpx -F ${TMPDIR}/navilink_waypoints.gpx
-compare ${REFERENCE}/navilink_waypoints.gpx ${TMPDIR}/navilink_waypoints.gpx
-gpsbabel -i gpx -f ${TMPDIR}/navilink_waypoints.gpx -o navilink -F ${TMPDIR}/navilink_waypoints_gpx.wpt
-#compare ${TMPDIR}/navilink_waypoints_gpx.wpt ${REFERENCE}/navilink_waypoints_gpx.wpt
-
-#
-# NaviLink tracks
-#
-gpsbabel -t -i navilink -f ${REFERENCE}/navilink_tracks.trk -o gpx -F ${TMPDIR}/navilink_tracks.gpx
-compare ${REFERENCE}/navilink_tracks.gpx ${TMPDIR}/navilink_tracks.gpx
-gpsbabel -t -i gpx -f ${TMPDIR}/navilink_tracks.gpx -o navilink -F ${TMPDIR}/navilink_tracks_gpx.trk
-#compare ${TMPDIR}/navilink_tracks_gpx.trk ${REFERENCE}/navilink_tracks_gpx.trk
-
-#
-# SBP tracks (Locosys NaviGPS)
-#
-gpsbabel -t -i sbp -f ${REFERENCE}/track/datalog.sbp -o gpx -F ${TMPDIR}/datalog.gpx
-compare ${REFERENCE}/track/datalog.gpx ${TMPDIR}/datalog.gpx
-
-#
-# MTK logger tests
-#
-rm -f ${TMPDIR}/mtk_logger.*
-gpsbabel -t -w -i mtk-bin,csv=${TMPDIR}/mtk_logger.csv -f ${REFERENCE}/track/mtk_logger.bin -o gpx -F ${TMPDIR}/mtk_logger.gpx
-compare ${REFERENCE}/track/mtk_logger.gpx ${TMPDIR}/mtk_logger.gpx
-## CSV compare needs to be done with '-w' - ignore whitespace.
-compare ${REFERENCE}/track/mtk_logger.csv ${TMPDIR}/mtk_logger.csv
-
-#
-# MTK logger tests (Holux M-241)
-#
-rm -f ${TMPDIR}/mtk_logger_m241.*
-gpsbabel -t -w -i m241-bin,csv=${TMPDIR}/mtk_logger_m241.csv -f ${REFERENCE}/track/mtk_logger_m241.bin -o gpx -F ${TMPDIR}/mtk_logger_m241.gpx
-compare ${REFERENCE}/track/mtk_logger_m241.gpx ${TMPDIR}/mtk_logger_m241.gpx
-## CSV compare needs to be done with '-w' - ignore whitespace.
-compare ${REFERENCE}/track/mtk_logger_m241.csv ${TMPDIR}/mtk_logger_m241.csv
-
-#
-# MTK logger tests (Holux GPsport-245 - using m241 module)
-#
-rm -f ${TMPDIR}/mtk_logger_gp245.*
-gpsbabel -t -w -i m241-bin -f ${REFERENCE}/track/mtk_logger_gp245.bin -o gpx -F ${TMPDIR}/mtk_logger_gp245.gpx
-compare ${REFERENCE}/track/mtk_logger_gp245.gpx ${TMPDIR}/mtk_logger_gp245.gpx
-
-#
-# MagicMaps IK3D Project File .ikt test
-#
-gpsbabel -i ik3d -f ${REFERENCE}/ik3d-sample.ikt -o gpx -F ${TMPDIR}/ik3d-sample.gpx
-compare ${REFERENCE}/ik3d-sample.gpx ${TMPDIR}/ik3d-sample.gpx
-
-# Exif format test (read only)
-gpsbabel -i exif -f ${REFERENCE}/IMG_2065.JPG -o unicsv,utc=0 -F ${TMPDIR}/exif-dat.csv
-compare ${REFERENCE}/exif-dat.csv ${TMPDIR}/exif-dat.csv
-
-# VidaOne track logs
-gpsbabel -i vidaone -f ${REFERENCE}/track/vidaone.gpb -t -o unicsv -F ${TMPDIR}/vidaone.csv
-compare ${REFERENCE}/track/vidaone.csv ${TMPDIR}/vidaone.csv
-
-# GoPal
-# GoPal is a bit tricky, because it's a lossy format regarding the first field (timetick).
-# so we first read a reference gopal file, and then write it out as gopal trk file, now with a computed timestamp.
-# Doing so results in more useful timestamps.
-# Next we convert this tst file to gpx to test the writing path, but gpx does not save speed, so do it twice...
-GoPalName=track20080703_173036.trk
-rm -f ${TMPDIR}/${GoPalName}.*
-#step 1: reference file
-gpsbabel -i gopal -f ${REFERENCE}/track20080703_173036.trk -o gopal -F ${TMPDIR}/${GoPalName}.tst
-#step2: gpx without speed information
-gpsbabel -i gopal -f ${TMPDIR}/${GoPalName}.tst -o gpx -F ${TMPDIR}/${GoPalName}.im
-gpsbabel -i gpx -f ${TMPDIR}/${GoPalName}.im -o gopal -F ${TMPDIR}/${GoPalName}.tst2
-#step 3: do it again to have 2 identical gopal files:
-gpsbabel -i gopal -f ${TMPDIR}/${GoPalName}.tst -o gpx -F ${TMPDIR}/${GoPalName}.im2
-gpsbabel -i gpx -f ${TMPDIR}/${GoPalName}.im2 -o gopal -F ${TMPDIR}/${GoPalName}.tst3
-compare ${TMPDIR}/${GoPalName}.tst2 ${TMPDIR}/${GoPalName}.tst3
-
-# Gopal with 11 fields is slightly more sane.
-gpsbabel -i gopal -f ${REFERENCE}/gopal-11.trk -o gpx -F ${TMPDIR}/gopal-11-gpx.gpx
-compare ${REFERENCE}/gopal-11-gpx.gpx ${TMPDIR}/gopal-11-gpx.gpx
-
-#
-# iBlue747 (style) track files
-#
-gpsbabel -i iblue747 -f ${REFERENCE}/track/iblue747.csv -o gpx -F ${TMPDIR}/iblue747~csv.gpx
-compare ${REFERENCE}/track/iblue747~csv.gpx ${TMPDIR}/iblue747~csv.gpx
-
-
-#
-# Google Navigator tracklines
-#
-gpsbabel -i gnav_trl -f ${REFERENCE}/track/gnav_trl.trl -t -o unicsv,utc=0 -F ${TMPDIR}/gnav_trl~trl.csv
-compare ${REFERENCE}/track/gnav_trl~trl.csv ${TMPDIR}/gnav_trl~trl.csv
-gpsbabel -i gnav_trl -f ${REFERENCE}/track/gnav_trl.trl -o gnav_trl -F ${TMPDIR}/gnav_trl.trl
-gpsbabel -i gnav_trl -f ${TMPDIR}/gnav_trl.trl -t -o unicsv,utc=0 -F ${TMPDIR}/gnav_trl~trl2.csv
-compare ${REFERENCE}/track/gnav_trl~trl.csv ${TMPDIR}/gnav_trl~trl2.csv
-
-#
-# simplify, option 'relative'
-#
-gpsbabel -i gpx -f ${REFERENCE}/track/simplify-relative.gpx -x simplify,relative,count=33 -o gpx -F ${TMPDIR}/simplify-relative2.gpx
-compare ${REFERENCE}/track/simplify-relative2.gpx ${TMPDIR}/simplify-relative2.gpx
-
#
# unicsv with various grids
#
gpsbabel -i gpx -f ${REFERENCE}/grid-utm~csv.gpx -o unicsv,utc=0,grid=utm -F ${TMPDIR}/grid-utm.csv
compare ${REFERENCE}/grid-utm.csv ${TMPDIR}/grid-utm.csv
-#
-# ggv_ovl 'Geogrid Viewer ascii overlay files'
-#
-gpsbabel -i ggv_ovl -f ${REFERENCE}/ggv_ovl.ovl -o gpx -F ${TMPDIR}/ggv_ovl~ovl.gpx
-compare ${REFERENCE}/ggv_ovl~ovl.gpx ${TMPDIR}/ggv_ovl~ovl.gpx
-
-#
-# igo2008_poi
-#
-gpsbabel -i igo2008_poi -f ${REFERENCE}/igo2008_poi.upoi -o gpx -F ${TMPDIR}/igo2008_poi~upoi.gpx
-compare ${REFERENCE}/igo2008_poi~upoi.gpx ${TMPDIR}/igo2008_poi~upoi.gpx
-gpsbabel -i igo2008_poi -f ${REFERENCE}/igo2008_poi.upoi -o unicsv -F ${TMPDIR}/igo2008_poi~upoi.csv
-compare ${REFERENCE}/igo2008_poi~upoi.csv ${TMPDIR}/igo2008_poi~upoi.csv
-
-#
-# MapAsia tr7 tracks
-#
-gpsbabel -i mapasia_tr7 -f ${REFERENCE}/track/mapasia-tr7.tr7 -t -o unicsv,utc=0 -F ${TMPDIR}/mapasia~tr7.csv
-compare ${REFERENCE}/track/mapasia~tr7.csv ${TMPDIR}/mapasia~tr7.csv
-gpsbabel -i mapasia_tr7 -f ${REFERENCE}/track/mapasia-tr7.tr7 -o gpx -F ${TMPDIR}/mapasia~tr7.gpx
-compare ${REFERENCE}/track/mapasia~tr7.gpx ${TMPDIR}/mapasia~tr7.gpx
-
-#
-# Jelbert GeoTagger JTR data files
-#
-gpsbabel -i jtr -f ${REFERENCE}/track/expertgps.jtr -o gpx -F ${TMPDIR}/expertgps~jtr.gpx -o jtr -F ${TMPDIR}/expertgps~jtr.jtr
-compare ${REFERENCE}/track/expertgps~jtr.gpx ${TMPDIR}/expertgps~jtr.gpx
-compare ${REFERENCE}/track/expertgps.jtr ${TMPDIR}/expertgps~jtr.jtr
-
-#
-# Navitel Navigator binary tracks
-#
-gpsbabel -i gdb -f ${REFERENCE}/gdb-sample.gdb -o navitel_trk -F ${TMPDIR}/navitel_trk.bin
-bincompare ${REFERENCE}/track/navitel_trk.bin ${TMPDIR}/navitel_trk.bin
-gpsbabel -i navitel_trk -f ${REFERENCE}/track/navitel_trk.bin -o navitel_trk -F ${TMPDIR}/navitel_trk2.bin
-bincompare ${TMPDIR}/navitel_trk.bin ${TMPDIR}/navitel_trk2.bin
-
-#
-# XAiOX iTrackU Logger
-#
-rm -f ${TMPDIR}/itracku.unicsv
-gpsbabel -w -i itracku-bin -f ${REFERENCE}/itracku.dat -o unicsv,utc=0 -F ${TMPDIR}/itracku.unicsv
-compare ${REFERENCE}/itracku.unicsv ${TMPDIR}/itracku.unicsv
-
-#
-# Memory-Map Navigator overlay files (.mmo)
-#
-# reading version 22 (0x16)
-gpsbabel -i mmo -f ${REFERENCE}/memory-map.mmo -o gpx -F ${TMPDIR}/memory-map~mmo.gpx
-compare ${REFERENCE}/memory-map~mmo.gpx ${TMPDIR}/memory-map~mmo.gpx
-# reading version 24 (0x18)
-gpsbabel -i mmo -f ${REFERENCE}/memory-map_v24.mmo -o gpx -F ${TMPDIR}/memory-map_v24~mmo.gpx
-compare ${REFERENCE}/memory-map_v24~mmo.gpx ${TMPDIR}/memory-map_v24~mmo.gpx
-#writing (check only for memory leaks)
-gpsbabel -i gpx -f ${REFERENCE}/memory-map~mmo.gpx -o mmo -F ${TMPDIR}/memory-map~mmo.mmo
-gpsbabel -i mmo -f ${TMPDIR}/memory-map~mmo.mmo -o gpx -F ${TMPDIR}/memory-map~mmo~gpx.mmo
-
-#
-# Skyforce ascii files
-#
-gpsbabel -i skyforce -f ${REFERENCE}/skyforce_wpt.txt -o gpx -F ${TMPDIR}/skyforce_wpt.gpx
-compare ${REFERENCE}/skyforce_wpt.gpx ${TMPDIR}/skyforce_wpt.gpx
-gpsbabel -i skyforce -f ${REFERENCE}/route/skyforce_rte.txt -o gpx -F ${TMPDIR}/skyforce_rte.gpx
-compare ${REFERENCE}/route/skyforce_rte.gpx ${TMPDIR}/skyforce_rte.gpx
-gpsbabel -i skyforce -f ${REFERENCE}/track/skyforce_trk.txt -o gpx -F ${TMPDIR}/skyforce_trk.gpx
-compare ${REFERENCE}/track/skyforce_trk.gpx ${TMPDIR}/skyforce_trk.gpx
-
-gpsbabel -i skyforce \
- -f ${REFERENCE}/skyforce_wpt.txt \
- -f ${REFERENCE}/route/skyforce_rte.txt \
- -f ${REFERENCE}/track/skyforce_trk.txt -o gpx -F ${TMPDIR}/skyforce.gpx
-compare ${REFERENCE}/skyforce.gpx ${TMPDIR}/skyforce.gpx
-
-#
-# PocketFMS breadcrumb files
-#
-gpsbabel -i pocketfms_bc -f ${REFERENCE}/pocketfms_bc -o gpx -F ${TMPDIR}/pocketfms_bc.gpx
-compare ${REFERENCE}/pocketfms_bc.gpx ${TMPDIR}/pocketfms_bc.gpx
-gpsbabel -i gpx -f ${REFERENCE}/pocketfms_bc.gpx -o pocketfms_bc -F ${TMPDIR}/pocketfms_bc
-bincompare ${REFERENCE}/pocketfms_bc.babel ${TMPDIR}/pocketfms_bc
-
-#
-# PocketFMS flightplan files (.xml)
-#
-gpsbabel -i pocketfms_fp -f ${REFERENCE}/pocketfms_fp.xml -o gpx -F ${TMPDIR}/pocketfms_fp.gpx
-compare ${REFERENCE}/pocketfms_fp.gpx ${TMPDIR}/pocketfms_fp.gpx
-
-#
-# PocketFMS waypoints file (.txt)
-#
-gpsbabel -i gpx -f ${REFERENCE}/pocketfms_fp.gpx -o pocketfms_wp -F ${TMPDIR}/pocketfms_wp.txt
-compare ${REFERENCE}/pocketfms_wp.txt ${TMPDIR}/pocketfms_wp.txt
-gpsbabel -i pocketfms_wp -f ${REFERENCE}/pocketfms_wp.txt -o gpx -F ${TMPDIR}/pocketfms_wp.gpx
-compare ${REFERENCE}/pocketfms_wp.gpx ${TMPDIR}/pocketfms_wp.gpx
-
#
# MGL Enigma route file (.ert)
#
compare ${REFERENCE}/enigma-gpsb.ert ${TMPDIR}/enigma.ert
gpsbabel -i enigma -f ${REFERENCE}/enigma-pfms.ert -o gpx -F ${TMPDIR}/enigma.gpx
compare ${REFERENCE}/enigma.gpx ${TMPDIR}/enigma.gpx
-
-#
-# Columbus/Visiontac V900 "binary" csv files
-#
-gpsbabel -i v900 -f ${REFERENCE}/v900_basic_mode.csv -o gpx -F ${TMPDIR}/v900_basic_mode.gpx
-compare ${REFERENCE}/v900_basic_mode.gpx ${TMPDIR}/v900_basic_mode.gpx
-gpsbabel -i v900 -f ${REFERENCE}/v900_advanced_mode.csv -o gpx -F ${TMPDIR}/v900_advanced_mode.gpx
-compare ${REFERENCE}/v900_advanced_mode.gpx ${TMPDIR}/v900_advanced_mode.gpx
-
-#
-# Naivguide
-#
-gpsbabel -i naviguide -f ${REFERENCE}/route/naviguide-route.twl -o gpx -F ${TMPDIR}/naviguide.gpx
-compare ${REFERENCE}/route/naviguide.gpx ${TMPDIR}/naviguide.gpx
-# Make sure ICS negative eastings and northings work.
-gpsbabel -i gpx -f ${REFERENCE}/ics.gpx -o naviguide -F ${TMPDIR}/ics.gpx.naviguide
-gpsbabel -i naviguide -f ${TMPDIR}/ics.gpx.naviguide -o gpx -F ${TMPDIR}/ics.gpx.naviguide.gpx
-compare ${REFERENCE}/ics.gpx.naviguide.gpx ${TMPDIR}/ics.gpx.naviguide.gpx
--- /dev/null
+
+#
+# CoastalExplorer..
+gpsbabel -r -i coastexp -f ${REFERENCE}/coastexp.nob -o gpx -F ${TMPDIR}/coastexp.gpx
+compare ${REFERENCE}/coastexp.ref ${TMPDIR}/coastexp.gpx
+gpsbabel -r -i gpx -f ${TMPDIR}/coastexp.gpx -o coastexp -F ${TMPDIR}/coastexp.nob
+compare ${REFERENCE}/coastexp.ref2 ${TMPDIR}/coastexp.nob
+gpsbabel -w -i coastexp -f ${REFERENCE}/coastexp.nob -o gpx -F ${TMPDIR}/coastexp.gpx
+compare ${REFERENCE}/coastexp.ref3 ${TMPDIR}/coastexp.gpx
+gpsbabel -w -i gpx -f ${TMPDIR}/coastexp.gpx -o coastexp -F ${TMPDIR}/coastexp.nob
+compare ${REFERENCE}/coastexp.ref4 ${TMPDIR}/coastexp.nob
+#
--- /dev/null
+#
+# copilot
+#
+rm -f ${TMPDIR}/copilot.pdb
+gpsbabel -i copilot -f ${REFERENCE}/UKultralight.pdb -o copilot -F ${TMPDIR}/cop.pdb
+gpsbabel -i copilot -f ${REFERENCE}/UKultralight.pdb -o gpx -F ${TMPDIR}/cop1.gpx
+gpsbabel -i copilot -f ${TMPDIR}/cop.pdb -o gpx -F ${TMPDIR}/cop2.gpx
+compare ${TMPDIR}/cop1.gpx ${TMPDIR}/cop2.gpx
--- /dev/null
+
+#
+# cotoGPS tests
+#
+rm -f ${TMPDIR}/coto*
+# Track reading
+gpsbabel -i coto -f ${REFERENCE}/cototesttrack.pdb -o xcsv,style=${REFERENCE}/cototest.style -F ${TMPDIR}/cototrack.csv
+compare ${REFERENCE}/cototesttrack.csv ${TMPDIR}/cototrack.csv
+# Marker read
+gpsbabel -i coto -f ${REFERENCE}/cototestmarker.pdb -o gpx -F ${TMPDIR}/cotomarker.gpx
+compare ${REFERENCE}/cototestmarker.gpx ${TMPDIR}/cotomarker.gpx
+# Marker write
+gpsbabel -i gpx -f ${REFERENCE}/cototestmarker.gpx -o coto -F ${TMPDIR}/cotomarker.pdb
+# bincompare ${REFERENCE}/cototestmarker.pdb ${TMPDIR}/cotomarker.pdb
+gpsbabel -i coto -f ${TMPDIR}/cotomarker.pdb -o gpx -F ${TMPDIR}/cotomarker.gpx
+compare ${REFERENCE}/cototestmarker.gpx ${TMPDIR}/cotomarker.gpx
+
--- /dev/null
+#
+# CarteSurTable read test
+#
+rm -f ${TMPDIR}/cst-*
+gpsbabel -i cst -f ${REFERENCE}/route/cst-sample.cst -o gpx -F ${TMPDIR}/cst-sample.gpx
+compare ${REFERENCE}/route/cst-sample.gpx ${TMPDIR}/cst-sample.gpx
--- /dev/null
+
+# CSV (Comma separated value) data.
+
+gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o csv -F ${TMPDIR}/csv.csv
+gpsbabel -i csv -f ${TMPDIR}/csv.csv -o csv -F ${TMPDIR}/csv2.csv
+compare ${TMPDIR}/csv2.csv ${TMPDIR}/csv.csv
+# And the alternate command line version.
+gpsbabel -i csv -o gpx ${TMPDIR}/csv.csv ${TMPDIR}/csv3.gpx
+gpsbabel -i gpx -o csv ${TMPDIR}/csv3.gpx ${TMPDIR}/csv4.csv
+compare ${TMPDIR}/csv.csv ${TMPDIR}/csv4.csv
--- /dev/null
+
+# Navitrak DNA marker format
+gpsbabel -i dna -f ${REFERENCE}/dnatest.txt -o dna -F ${TMPDIR}/dnatest.txt
+compare ${REFERENCE}/dnatest.txt ${TMPDIR}/dnatest.txt
--- /dev/null
+#
+# Dop filter test
+#
+OLD_LANG=$LANG
+LANG=C
+rm -f ${TMPDIR}/dop*
+sed '/<hdop>50/d' ${REFERENCE}/dop-test.gpx | gpsbabel -i gpx -f - -o openoffice -F - | sed 's/RPT...//g' > ${TMPDIR}/dop-hdop.ref
+gpsbabel -i gpx -f ${REFERENCE}/dop-test.gpx -x discard,hdop=50 -o openoffice -F - | sed 's/RPT...//g' > ${TMPDIR}/dop-hdop.fil
+compare ${TMPDIR}/dop-hdop.ref ${TMPDIR}/dop-hdop.fil
+sed '/<vdop>50/d' ${REFERENCE}/dop-test.gpx | gpsbabel -i gpx -f - -o openoffice -F - | sed 's/RPT...//g' > ${TMPDIR}/dop-vdop.ref
+gpsbabel -i gpx -f ${REFERENCE}/dop-test.gpx -x discard,vdop=50 -o openoffice -F - | sed 's/RPT...//g' > ${TMPDIR}/dop-vdop.fil
+compare ${TMPDIR}/dop-vdop.ref ${TMPDIR}/dop-vdop.fil
+LANG=$OLD_LANG
--- /dev/null
+#
+# Duplicate filter - Since filters have no format of their own, we use csv
+# as an intermediate format for testing the filter.
+#
+rm -f ${TMPDIR}/filterdupe.csv1 ${TMPDIR}/filterdupe.csv2
+gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o csv -F ${TMPDIR}/filterdupe.csv1
+gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -f ${REFERENCE}/../geocaching.loc -x duplicate,shortname \
+ -o csv -F ${TMPDIR}/filterdupe.csv2
+sort_and_compare ${TMPDIR}/filterdupe.csv1 ${TMPDIR}/filterdupe.csv2
--- /dev/null
+
+#
+# EasyGPS. Another binary format.
+#
+rm -f ${TMPDIR}/easy.loc
+gpsbabel -i easygps -f ${REFERENCE}/easygps.loc -o easygps -F ${TMPDIR}/ez.loc
+gpsbabel -i easygps -f ${REFERENCE}/easygps.loc -o gpx -F ${TMPDIR}/ez1.gpx
+gpsbabel -i easygps -f ${TMPDIR}/ez.loc -o gpx -F ${TMPDIR}/ez2.gpx
+compare ${TMPDIR}/ez1.gpx ${TMPDIR}/ez2.gpx
+
--- /dev/null
+# Exif format test (read only)
+gpsbabel -i exif -f ${REFERENCE}/IMG_2065.JPG -o unicsv,utc=0 -F ${TMPDIR}/exif-dat.csv
+compare ${REFERENCE}/exif-dat.csv ${TMPDIR}/exif-dat.csv
+
--- /dev/null
+#
+# Fugawi test cases
+rm -f ${TMPDIR}/fugawi*
+gpsbabel -i fugawi -f ${REFERENCE}/fugawi.notime.txt -o fugawi -F ${TMPDIR}/fugawi1.txt
+compare ${REFERENCE}/fugawi.ref.txt ${TMPDIR}/fugawi1.txt
+gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o fugawi -F ${TMPDIR}/fugawi2.txt
+compare ${REFERENCE}/fugawi.ref.txt ${TMPDIR}/fugawi2.txt
+gpsbabel -i fugawi -f ${TMPDIR}/fugawi2.txt -o fugawi -F ${TMPDIR}/fugawi3.txt
+compare ${TMPDIR}/fugawi2.txt ${TMPDIR}/fugawi3.txt
+gpsbabel -i fugawi -f ${REFERENCE}/fugawi.time.txt -o fugawi -F ${TMPDIR}/fugawi4.txt
+compare ${REFERENCE}/fugawi.time.ref.txt ${TMPDIR}/fugawi4.txt
+gpsbabel -i gpx -f ${REFERENCE}/track/tracks.gpx -o fugawi -F ${TMPDIR}/fugawi5.txt
+compare ${REFERENCE}/track/fugawi.txt ${TMPDIR}/fugawi5.txt
--- /dev/null
+#
+# G7ToWin (read only) test
+#
+gpsbabel -i g7towin -f ${REFERENCE}/expertgps.g7t -o garmin_txt,utc=0 -F ${TMPDIR}/expertgps-g7t.txt
+compare ${REFERENCE}/expertgps-g7t.txt ${TMPDIR}/expertgps-g7t.txt
--- /dev/null
+
+#
+# Geocaching Database is a binary Palm format that, like the GPX variants
+# has a zillion "equivalent" encodings of any given record set. So we
+# read the reference file, spin it to GPX and back to GCDB and then spin
+# that one to GPX.
+#
+
+gpsbabel -i gcdb -f ${REFERENCE}/GeocachingDB.PDB -o gpx -F ${TMPDIR}/gcdb1.gpx \
+ -o gcdb -F ${TMPDIR}/gcdb1.pdb
+gpsbabel -i gpx -f ${TMPDIR}/gcdb1.gpx -o gpx -F ${TMPDIR}/gcdb2.gpx
+compare ${TMPDIR}/gcdb1.gpx ${TMPDIR}/gcdb1.gpx
+
--- /dev/null
+#
+# Garmin GPS Database .gdb tests
+#
+rm -f ${TMPDIR}/gdb-*
+gpsbabel -i gdb,via -f ${REFERENCE}/gdb-sample.gdb -o gpx -F ${TMPDIR}/gdb-sample.gpx
+compare ${REFERENCE}/gdb-sample.gpx ${TMPDIR}/gdb-sample.gpx
+gpsbabel -i gpx -f ${REFERENCE}/gdb-sample.gpx -o gdb,ver=1 -F ${TMPDIR}/gdb-sample.gdb
+gpsbabel -i gdb -f ${TMPDIR}/gdb-sample.gdb -o gpx -F ${TMPDIR}/gdb-sample_v2.gpx
+gpsbabel -i gdb,via -f ${REFERENCE}/gdb-sample-v3.gdb -o gpx -F ${TMPDIR}/gdb-sample_v3.gpx
+compare ${REFERENCE}/gdb-sample.gpx ${TMPDIR}/gdb-sample_v3.gpx
+#
+# Because of Garmin coordinates storage gpx is not good for this test
+# compare ${REFERENCE}/gdb-sample.gpx ${TMPDIR}/gdb-sample_v2.gpx
+
--- /dev/null
+#
+# Geoniche: No reference file was available, so we created one and just
+# test it against itself.
+#
+rm -f ${TMPDIR}/gn.pdb ${TMPDIR}/1.gpx ${TMPDIR}/2.gpx
+gpsbabel -i geoniche -f ${REFERENCE}/geoniche.pdb -o geoniche -F ${TMPDIR}/gn.pdb
+gpsbabel -i geoniche -f ${REFERENCE}/geoniche.pdb -o gpx -F ${TMPDIR}/1.gpx
+gpsbabel -i geoniche -f ${TMPDIR}/gn.pdb -o gpx -F ${TMPDIR}/2.gpx
+compare ${TMPDIR}/1.gpx ${TMPDIR}/2.gpx
+#
+gpsbabel -i geoniche -f ${REFERENCE}/gn-targets.pdb -o gpx -F ${TMPDIR}/gn-targets.gpx
+compare ${REFERENCE}/gn-targets.gpx ${TMPDIR}/gn-targets.gpx
--- /dev/null
+#
+# Geogrid Viewer tracklogs
+#
+rm -f ${TMPDIR}/ggv_log*
+gpsbabel -i gdb -f ${REFERENCE}/gdb-sample.gdb -x track,pack -o ggv_log -F ${TMPDIR}/ggv_log-sample.log
+bincompare ${REFERENCE}/track/ggv_log-sample.log ${TMPDIR}/ggv_log-sample.log
+gpsbabel -i ggv_log -f ${REFERENCE}/track/ggv_log-sample.log -o ggv_log -F ${TMPDIR}/ggv_log-sample2.log
+bincompare ${REFERENCE}/track/ggv_log-sample.log ${TMPDIR}/ggv_log-sample2.log
+
--- /dev/null
+
+#
+# ggv_ovl 'Geogrid Viewer ascii overlay files'
+#
+gpsbabel -i ggv_ovl -f ${REFERENCE}/ggv_ovl.ovl -o gpx -F ${TMPDIR}/ggv_ovl~ovl.gpx
+compare ${REFERENCE}/ggv_ovl~ovl.gpx ${TMPDIR}/ggv_ovl~ovl.gpx
+
--- /dev/null
+#
+# Garmin logbook. This format has an extra section (lap data with things
+# like heartbeat and calories burned) that we don't know what to do with,
+# so we convert it to gpx, convert it to itself, convert THAT to gpx, and
+# compare those.
+#
+rm -f ${TMPDIR}/glogbook*
+gpsbabel -i glogbook -f ${REFERENCE}/track/garmin_logbook.xml -o gpx -F ${TMPDIR}/glog1.gpx
+gpsbabel -i glogbook -f ${REFERENCE}/track/garmin_logbook.xml -o glogbook -F ${TMPDIR}/glog.xml
+gpsbabel -i glogbook -f ${TMPDIR}/glog.xml -o gpx -F ${TMPDIR}/glog2.gpx
+compare ${TMPDIR}/glog1.gpx ${TMPDIR}/glog2.gpx
--- /dev/null
+
+#
+# Google Navigator tracklines
+#
+gpsbabel -i gnav_trl -f ${REFERENCE}/track/gnav_trl.trl -t -o unicsv,utc=0 -F ${TMPDIR}/gnav_trl~trl.csv
+compare ${REFERENCE}/track/gnav_trl~trl.csv ${TMPDIR}/gnav_trl~trl.csv
+gpsbabel -i gnav_trl -f ${REFERENCE}/track/gnav_trl.trl -o gnav_trl -F ${TMPDIR}/gnav_trl.trl
+gpsbabel -i gnav_trl -f ${TMPDIR}/gnav_trl.trl -t -o unicsv,utc=0 -F ${TMPDIR}/gnav_trl~trl2.csv
+compare ${REFERENCE}/track/gnav_trl~trl.csv ${TMPDIR}/gnav_trl~trl2.csv
+
--- /dev/null
+#
+# Google Maps XML test
+#
+rm -f ${TMPDIR}/google.out
+gpsbabel -i google -f ${REFERENCE}/google.xml -o csv -F ${TMPDIR}/google.out
+compare ${REFERENCE}/google.csv ${TMPDIR}/google.out
+
+rm -f ${TMPDIR}/google.out
+gpsbabel -i google -f ${REFERENCE}/google.js -o csv -F ${TMPDIR}/google.out
+compare ${REFERENCE}/google.csv ${TMPDIR}/google.out
+
+rm -f ${TMPDIR}/google.out
+gpsbabel -i google -f ${REFERENCE}/google_jan_06.html -o csv -F ${TMPDIR}/google.out
+compare ${REFERENCE}/google_jan_06.csv ${TMPDIR}/google.out
+
+rm -f ${TMPDIR}/google.out
+gpsbabel -i google -f ${REFERENCE}/google_multisegment.js -o gpx -F ${TMPDIR}/google.out
+compare ${REFERENCE}/google_multisegment.gpx ${TMPDIR}/google.out
--- /dev/null
+# GoPal
+# GoPal is a bit tricky, because it's a lossy format regarding the first field (timetick).
+# so we first read a reference gopal file, and then write it out as gopal trk file, now with a computed timestamp.
+# Doing so results in more useful timestamps.
+# Next we convert this tst file to gpx to test the writing path, but gpx does not save speed, so do it twice...
+GoPalName=track20080703_173036.trk
+rm -f ${TMPDIR}/${GoPalName}.*
+#step 1: reference file
+gpsbabel -i gopal -f ${REFERENCE}/track20080703_173036.trk -o gopal -F ${TMPDIR}/${GoPalName}.tst
+#step2: gpx without speed information
+gpsbabel -i gopal -f ${TMPDIR}/${GoPalName}.tst -o gpx -F ${TMPDIR}/${GoPalName}.im
+gpsbabel -i gpx -f ${TMPDIR}/${GoPalName}.im -o gopal -F ${TMPDIR}/${GoPalName}.tst2
+#step 3: do it again to have 2 identical gopal files:
+gpsbabel -i gopal -f ${TMPDIR}/${GoPalName}.tst -o gpx -F ${TMPDIR}/${GoPalName}.im2
+gpsbabel -i gpx -f ${TMPDIR}/${GoPalName}.im2 -o gopal -F ${TMPDIR}/${GoPalName}.tst3
+compare ${TMPDIR}/${GoPalName}.tst2 ${TMPDIR}/${GoPalName}.tst3
+
+# Gopal with 11 fields is slightly more sane.
+gpsbabel -i gopal -f ${REFERENCE}/gopal-11.trk -o gpx -F ${TMPDIR}/gopal-11-gpx.gpx
+compare ${REFERENCE}/gopal-11-gpx.gpx ${TMPDIR}/gopal-11-gpx.gpx
+
--- /dev/null
+
+#
+# GPilotS. A Palm format. Another binary format that
+#
+# rm -f ${TMPDIR/gpilots.l
+#gpsbabel -i easygps -f ${REFERENCE}/gpilots.pdb -o gpx -F ${TMPDIR}/gp.gpx
+gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o gpilots -F ${TMPDIR}/blah.pdb
+gpsbabel -i gpilots -f ${TMPDIR}/blah.pdb -o gpx -F ${TMPDIR}/1.gpx
+gpsbabel -i gpilots -f ${REFERENCE}/gpilots.pdb -o gpx -F ${TMPDIR}/2.gpx
+compare ${TMPDIR}/1.gpx ${TMPDIR}/2.gpx
+#gpsbabel -i easygps -f ${REFERENCE}/gpilots.pdb -o gpx -F ${TMPDIR}/gp.gpx
+
--- /dev/null
+# GpsDrive
+rm -f ${TMPDIR}/gpsdrive.txt
+gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o gpsdrive -F ${TMPDIR}/gpsdrive.txt
+compare ${TMPDIR}/gpsdrive.txt ${REFERENCE}
+gpsbabel -i gpsdrive -f ${REFERENCE}/gpsdrive.txt -o gpsdrive -F ${TMPDIR}/gpsdrive2.txt
+compare ${REFERENCE}/gpsdrive.txt ${TMPDIR}/gpsdrive2.txt
+
--- /dev/null
+
+#
+# hiketech tests
+#
+rm -f ${TMPDIR}/hiketech*
+gpsbabel -i gpx -f ${REFERENCE}/expertgps.gpx -o hiketech -F ${TMPDIR}/hiketech.out
+compare ${REFERENCE}/hiketech.ref ${TMPDIR}/hiketech.out
+gpsbabel -i hiketech -f ${REFERENCE}/hiketech.ref -o gpx -F ${TMPDIR}/hiketech.gpx
+compare ${REFERENCE}/hiketech.gpx ${TMPDIR}/hiketech.gpx
--- /dev/null
+#
+# iBlue747 (style) track files
+#
+gpsbabel -i iblue747 -f ${REFERENCE}/track/iblue747.csv -o gpx -F ${TMPDIR}/iblue747~csv.gpx
+compare ${REFERENCE}/track/iblue747~csv.gpx ${TMPDIR}/iblue747~csv.gpx
+
--- /dev/null
+
+#
+# IGN Rando tests
+#
+gpsbabel -i ignrando -f ${REFERENCE}/track/ignrando-sample.rdn -o ignrando -F ${TMPDIR}/ignrando-sample.rdn
+gpsbabel -i ignrando -f ${TMPDIR}/ignrando-sample.rdn -o gpx -F ${TMPDIR}/ignrando-sample.gpx
+compare ${REFERENCE}/track/ignrando-sample.gpx ${TMPDIR}/ignrando-sample.gpx
+
--- /dev/null
+#
+# igo2008_poi
+#
+gpsbabel -i igo2008_poi -f ${REFERENCE}/igo2008_poi.upoi -o gpx -F ${TMPDIR}/igo2008_poi~upoi.gpx
+compare ${REFERENCE}/igo2008_poi~upoi.gpx ${TMPDIR}/igo2008_poi~upoi.gpx
+gpsbabel -i igo2008_poi -f ${REFERENCE}/igo2008_poi.upoi -o unicsv -F ${TMPDIR}/igo2008_poi~upoi.csv
+compare ${REFERENCE}/igo2008_poi~upoi.csv ${TMPDIR}/igo2008_poi~upoi.csv
+
--- /dev/null
+#
+# MagicMaps IK3D Project File .ikt test
+#
+gpsbabel -i ik3d -f ${REFERENCE}/ik3d-sample.ikt -o gpx -F ${TMPDIR}/ik3d-sample.gpx
+compare ${REFERENCE}/ik3d-sample.gpx ${TMPDIR}/ik3d-sample.gpx
+
--- /dev/null
+#
+# XAiOX iTrackU Logger
+#
+rm -f ${TMPDIR}/itracku.unicsv
+gpsbabel -w -i itracku-bin -f ${REFERENCE}/itracku.dat -o unicsv,utc=0 -F ${TMPDIR}/itracku.unicsv
+compare ${REFERENCE}/itracku.unicsv ${TMPDIR}/itracku.unicsv
+
--- /dev/null
+#
+# Jelbert GeoTagger JTR data files
+#
+gpsbabel -i jtr -f ${REFERENCE}/track/expertgps.jtr -o gpx -F ${TMPDIR}/expertgps~jtr.gpx -o jtr -F ${TMPDIR}/expertgps~jtr.jtr
+compare ${REFERENCE}/track/expertgps~jtr.gpx ${TMPDIR}/expertgps~jtr.gpx
+compare ${REFERENCE}/track/expertgps.jtr ${TMPDIR}/expertgps~jtr.jtr
+
--- /dev/null
+
+#
+# Kartex waypoints and tracks
+#
+rm -f ${TMPDIR}/kartex*
+gpsbabel -i kwf2 -f ${REFERENCE}/waypointsDd.kwf -o kwf2 -F ${TMPDIR}/kartex-1a.kwf
+compare ${REFERENCE}/kartex-out.kwf ${TMPDIR}/kartex-1a.kwf
+# ! different format of coords; this checks LATLON_HUMAN_READABLE !
+gpsbabel -i kwf2 -f ${REFERENCE}/waypointsDMm.kwf -o kwf2 -F ${TMPDIR}/kartex-1b.kwf
+compare ${TMPDIR}/kartex-1a.kwf ${TMPDIR}/kartex-1b.kwf
+#
+gpsbabel -i ktf2 -f ${REFERENCE}/track/trackDd.ktf -o ktf2 -F ${TMPDIR}/kartex-2a.ktf
+compare ${REFERENCE}/track/kartex-out.ktf ${TMPDIR}/kartex-2a.ktf
+# ! different format of coords; this checks LATLON_HUMAN_READABLE !
+gpsbabel -i ktf2 -f ${REFERENCE}/track/trackDMm.ktf -o ktf2 -F ${TMPDIR}/kartex-2b.ktf
+compare ${TMPDIR}/kartex-2a.ktf ${TMPDIR}/kartex-2b.ktf
+
--- /dev/null
+#
+# MapAsia tr7 tracks
+#
+gpsbabel -i mapasia_tr7 -f ${REFERENCE}/track/mapasia-tr7.tr7 -t -o unicsv,utc=0 -F ${TMPDIR}/mapasia~tr7.csv
+compare ${REFERENCE}/track/mapasia~tr7.csv ${TMPDIR}/mapasia~tr7.csv
+gpsbabel -i mapasia_tr7 -f ${REFERENCE}/track/mapasia-tr7.tr7 -o gpx -F ${TMPDIR}/mapasia~tr7.gpx
+compare ${REFERENCE}/track/mapasia~tr7.gpx ${TMPDIR}/mapasia~tr7.gpx
+
--- /dev/null
+#
+# Memory-Map Navigator overlay files (.mmo)
+#
+# reading version 22 (0x16)
+gpsbabel -i mmo -f ${REFERENCE}/memory-map.mmo -o gpx -F ${TMPDIR}/memory-map~mmo.gpx
+compare ${REFERENCE}/memory-map~mmo.gpx ${TMPDIR}/memory-map~mmo.gpx
+# reading version 24 (0x18)
+gpsbabel -i mmo -f ${REFERENCE}/memory-map_v24.mmo -o gpx -F ${TMPDIR}/memory-map_v24~mmo.gpx
+compare ${REFERENCE}/memory-map_v24~mmo.gpx ${TMPDIR}/memory-map_v24~mmo.gpx
+#writing (check only for memory leaks)
+gpsbabel -i gpx -f ${REFERENCE}/memory-map~mmo.gpx -o mmo -F ${TMPDIR}/memory-map~mmo.mmo
+gpsbabel -i mmo -f ${TMPDIR}/memory-map~mmo.mmo -o gpx -F ${TMPDIR}/memory-map~mmo~gpx.mmo
+
--- /dev/null
+#
+# MTK logger tests
+#
+rm -f ${TMPDIR}/mtk_logger.*
+gpsbabel -t -w -i mtk-bin,csv=${TMPDIR}/mtk_logger.csv -f ${REFERENCE}/track/mtk_logger.bin -o gpx -F ${TMPDIR}/mtk_logger.gpx
+compare ${REFERENCE}/track/mtk_logger.gpx ${TMPDIR}/mtk_logger.gpx
+## CSV compare needs to be done with '-w' - ignore whitespace.
+compare ${REFERENCE}/track/mtk_logger.csv ${TMPDIR}/mtk_logger.csv
+
+#
+# MTK logger tests (Holux M-241)
+#
+rm -f ${TMPDIR}/mtk_logger_m241.*
+gpsbabel -t -w -i m241-bin,csv=${TMPDIR}/mtk_logger_m241.csv -f ${REFERENCE}/track/mtk_logger_m241.bin -o gpx -F ${TMPDIR}/mtk_logger_m241.gpx
+compare ${REFERENCE}/track/mtk_logger_m241.gpx ${TMPDIR}/mtk_logger_m241.gpx
+## CSV compare needs to be done with '-w' - ignore whitespace.
+compare ${REFERENCE}/track/mtk_logger_m241.csv ${TMPDIR}/mtk_logger_m241.csv
+
+#
+# MTK logger tests (Holux GPsport-245 - using m241 module)
+#
+rm -f ${TMPDIR}/mtk_logger_gp245.*
+gpsbabel -t -w -i m241-bin -f ${REFERENCE}/track/mtk_logger_gp245.bin -o gpx -F ${TMPDIR}/mtk_logger_gp245.gpx
+compare ${REFERENCE}/track/mtk_logger_gp245.gpx ${TMPDIR}/mtk_logger_gp245.gpx
+
--- /dev/null
+
+# MXF (Maptech Exchange Format) file format
+rm -f ${TMPDIR}/mx.mxf ${TMPDIR}/mxf.mxf
+gpsbabel -i mxf -f ${REFERENCE}/mxf.mxf -o mxf -F ${TMPDIR}/mx.mxf
+gpsbabel -i mxf -f ${TMPDIR}/mx.mxf -o mxf -F ${TMPDIR}/mxf.mxf
+compare ${TMPDIR}/mxf.mxf ${REFERENCE}
+
--- /dev/null
+#
+# Navicache.
+gpsbabel -i navicache -f ${REFERENCE}/navicache.xml -o gpsutil -F ${TMPDIR}/navi.wpt
+compare ${REFERENCE}/navicache.ref ${TMPDIR}/navi.wpt
+#
--- /dev/null
+#
+# Naivguide
+#
+gpsbabel -i naviguide -f ${REFERENCE}/route/naviguide-route.twl -o gpx -F ${TMPDIR}/naviguide.gpx
+compare ${REFERENCE}/route/naviguide.gpx ${TMPDIR}/naviguide.gpx
+# Make sure ICS negative eastings and northings work.
+gpsbabel -i gpx -f ${REFERENCE}/ics.gpx -o naviguide -F ${TMPDIR}/ics.gpx.naviguide
+gpsbabel -i naviguide -f ${TMPDIR}/ics.gpx.naviguide -o gpx -F ${TMPDIR}/ics.gpx.naviguide.gpx
+compare ${REFERENCE}/ics.gpx.naviguide.gpx ${TMPDIR}/ics.gpx.naviguide.gpx
--- /dev/null
+#
+# NaviLink waypoints
+#
+gpsbabel -i navilink -f ${REFERENCE}/navilink_waypoints.wpt -o gpx -F ${TMPDIR}/navilink_waypoints.gpx
+compare ${REFERENCE}/navilink_waypoints.gpx ${TMPDIR}/navilink_waypoints.gpx
+gpsbabel -i gpx -f ${TMPDIR}/navilink_waypoints.gpx -o navilink -F ${TMPDIR}/navilink_waypoints_gpx.wpt
+#compare ${TMPDIR}/navilink_waypoints_gpx.wpt ${REFERENCE}/navilink_waypoints_gpx.wpt
+
+#
+# NaviLink tracks
+#
+gpsbabel -t -i navilink -f ${REFERENCE}/navilink_tracks.trk -o gpx -F ${TMPDIR}/navilink_tracks.gpx
+compare ${REFERENCE}/navilink_tracks.gpx ${TMPDIR}/navilink_tracks.gpx
+gpsbabel -t -i gpx -f ${TMPDIR}/navilink_tracks.gpx -o navilink -F ${TMPDIR}/navilink_tracks_gpx.trk
+#compare ${TMPDIR}/navilink_tracks_gpx.trk ${REFERENCE}/navilink_tracks_gpx.trk
+
--- /dev/null
+#
+# Navitel Navigator binary tracks
+#
+gpsbabel -i gdb -f ${REFERENCE}/gdb-sample.gdb -o navitel_trk -F ${TMPDIR}/navitel_trk.bin
+bincompare ${REFERENCE}/track/navitel_trk.bin ${TMPDIR}/navitel_trk.bin
+gpsbabel -i navitel_trk -f ${REFERENCE}/track/navitel_trk.bin -o navitel_trk -F ${TMPDIR}/navitel_trk2.bin
+bincompare ${TMPDIR}/navitel_trk.bin ${TMPDIR}/navitel_trk2.bin
+
--- /dev/null
+#
+# NetStumbler Summary File (read-only)
+#
+rm -f ${TMPDIR}/netstumbler.mps
+gpsbabel -i netstumbler -f ${REFERENCE}/netstumbler.txt -o mapsource -F ${TMPDIR}/netstumbler.mps
+bincompare ${TMPDIR}/netstumbler.mps ${REFERENCE}/netstumbler.mps
+
--- /dev/null
+
+#
+# Navigon Mobile Navigator .rte tests
+#
+rm -f ${TMPDIR}/nmn4-sample*
+gpsbabel -i nmn4 -f ${REFERENCE}/route/nmn4-sample.rte -o gpx -F ${TMPDIR}/nmn4-sample.gpx
+compare ${REFERENCE}/route/nmn4-sample.gpx ${TMPDIR}/nmn4-sample.gpx
+gpsbabel -i gpx -f ${REFERENCE}/route/nmn4-sample.gpx -o nmn4 -F ${TMPDIR}/nmn4-sample-out.rte
+compare ${REFERENCE}/route/nmn4-sample-out.rte ${TMPDIR}/nmn4-sample-out.rte
--- /dev/null
+#
+# PathAway Palm Database .pdb tests
+#
+rm -f ${TMPDIR}/pathaway*
+gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o pathaway,dbname="pathaway-geo" -F ${TMPDIR}/pathaway-geo.pdb
+gpsbabel -i pathaway -f ${TMPDIR}/pathaway-geo.pdb -o geo -F ${TMPDIR}/pathaway-geo.loc
+compare ${REFERENCE}/pathaway-geo.loc ${TMPDIR}/pathaway-geo.loc
+rm -f ${TMPDIR}/pathaway*
+gpsbabel -t -i pathaway -f ${REFERENCE}/track/pathaway.pdb -o gpx -F ${TMPDIR}/pathaway.gpx
+compare ${REFERENCE}/track/pathaway.gpx ${TMPDIR}/pathaway.gpx
--- /dev/null
+#
+# PocketFMS breadcrumb files
+#
+gpsbabel -i pocketfms_bc -f ${REFERENCE}/pocketfms_bc -o gpx -F ${TMPDIR}/pocketfms_bc.gpx
+compare ${REFERENCE}/pocketfms_bc.gpx ${TMPDIR}/pocketfms_bc.gpx
+gpsbabel -i gpx -f ${REFERENCE}/pocketfms_bc.gpx -o pocketfms_bc -F ${TMPDIR}/pocketfms_bc
+bincompare ${REFERENCE}/pocketfms_bc.babel ${TMPDIR}/pocketfms_bc
+
+#
+# PocketFMS flightplan files (.xml)
+#
+gpsbabel -i pocketfms_fp -f ${REFERENCE}/pocketfms_fp.xml -o gpx -F ${TMPDIR}/pocketfms_fp.gpx
+compare ${REFERENCE}/pocketfms_fp.gpx ${TMPDIR}/pocketfms_fp.gpx
+
+#
+# PocketFMS waypoints file (.txt)
+#
+gpsbabel -i gpx -f ${REFERENCE}/pocketfms_fp.gpx -o pocketfms_wp -F ${TMPDIR}/pocketfms_wp.txt
+compare ${REFERENCE}/pocketfms_wp.txt ${TMPDIR}/pocketfms_wp.txt
+gpsbabel -i pocketfms_wp -f ${REFERENCE}/pocketfms_wp.txt -o gpx -F ${TMPDIR}/pocketfms_wp.gpx
+compare ${REFERENCE}/pocketfms_wp.gpx ${TMPDIR}/pocketfms_wp.gpx
+
--- /dev/null
+#
+# Polygon filter
+#
+rm -f ${TMPDIR}/polygon.txt
+gpsbabel -i xmap -f ${REFERENCE}/arcdist_input.txt \
+ -x polygon,file=${REFERENCE}/polygon_allencty.txt \
+ -o xmap -F ${TMPDIR}/polygon.txt
+compare ${REFERENCE}/polygon_output.txt ${TMPDIR}/polygon.txt
+
--- /dev/null
+
+#
+# Position filter - Since very small distances are essentialy a duplicate
+# position filter, we can test very similarly to the duplicate filter.
+#
+rm -f ${TMPDIR}/filterpos.csv1 ${TMPDIR}/filterpos.csv2
+gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o csv -F ${TMPDIR}/filterpos.csv1
+gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -f ${REFERENCE}/../geocaching.loc -x position,distance=5f \
+ -o csv -F ${TMPDIR}/filterpos.csv2
+sort_and_compare ${TMPDIR}/filterpos.csv1 ${TMPDIR}/filterpos.csv2
--- /dev/null
+
+# PsiTrex. A text format that can't be handled by XCSV due to context of
+# data based on other data values in the file
+# Waypoints first
+rm -f ${TMPDIR}/psit-ww.txt ${TMPDIR}/psit-ww.mps
+gpsbabel -i psitrex -f ${REFERENCE}/psitwpts.txt -o mapsource -F ${TMPDIR}/psit-ww.mps
+gpsbabel -i mapsource -f ${TMPDIR}/psit-ww.mps -o psitrex -F ${TMPDIR}/psit-ww.txt
+compare ${REFERENCE}/psitwpts.txt ${TMPDIR}/psit-ww.txt
+
+# Now test correct "empty" handling - ask for routes when there aren't any
+# Uses mapsource as the empty handling for this has already happened above
+rm -f ${TMPDIR}/psit-wr.mps
+gpsbabel -r -i psitrex -f ${REFERENCE}/psitwpts.txt -o mapsource,mpsverout=3 -F ${TMPDIR}/psit-wr.mps
+compare ${REFERENCE}/mps-empty.mps ${TMPDIR}/psit-wr.mps
+
+# Routes next
+rm -f ${TMPDIR}/psit-rr.txt ${TMPDIR}/psit-rr.mps
+gpsbabel -r -i psitrex -f ${REFERENCE}/route/psitrtes.txt -o mapsource -F ${TMPDIR}/psit-rr.mps
+gpsbabel -r -i mapsource -f ${TMPDIR}/psit-rr.mps -o psitrex -F ${TMPDIR}/psit-rr.txt
+compare ${REFERENCE}/route/psitrtes.txt ${TMPDIR}/psit-rr.txt
+
+# Now test correct "empty" handling - ask for tracks when there aren't any
+# Uses mapsource as the empty handling for this has already happened above
+rm -f ${TMPDIR}/psit-rt.mps
+gpsbabel -t -i psitrex -f ${REFERENCE}/route/psitrtes.txt -o mapsource,mpsverout=3 -F ${TMPDIR}/psit-rt.mps
+compare ${REFERENCE}/mps-empty.mps ${TMPDIR}/psit-rt.mps
+
+# Tracks last
+rm -f ${TMPDIR}/psit-tt.txt ${TMPDIR}/psit-tt.mps
+gpsbabel -t -i psitrex -f ${REFERENCE}/track/psittrks.txt -o mapsource -F ${TMPDIR}/psit-tt.mps
+gpsbabel -t -i mapsource -f ${TMPDIR}/psit-tt.mps -o psitrex -F ${TMPDIR}/psit-tt.txt
+compare ${REFERENCE}/track/psittrks.txt ${TMPDIR}/psit-tt.txt
+
+# Now test correct "empty" handling - ask for waypoints when there aren't any
+# Uses mapsource as the empty handling for this has already happened above
+rm -f ${TMPDIR}/psit-tw.mps
+gpsbabel -i psitrex -f ${REFERENCE}/track/psittrks.txt -o mapsource,mpsverout=3 -F ${TMPDIR}/psit-tw.mps
+compare ${REFERENCE}/mps-empty.mps ${TMPDIR}/psit-tw.mps
+
--- /dev/null
+# PSP (PocketStreets 2002 Pushpin (.PSP)) file format. Use mxf as an
+# intermediate format to avoid binary FP anomalies on compareerent platforms.
+rm -f ${TMPDIR}/psp.mxf ${TMPDIR}/mxf.psp
+gpsbabel -i psp -f ${REFERENCE}/ps.psp -o mxf -F ${TMPDIR}/psp.mxf
+gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o mxf -F ${TMPDIR}/mxf.psp
+compare ${TMPDIR}/psp.mxf ${TMPDIR}/mxf.psp
+gpsbabel -i psp -f ${REFERENCE}/ps.psp -o gpx -F ${TMPDIR}/psp1.gpx
+gpsbabel -i psp -f ${REFERENCE}/ps.psp -o psp -F ${TMPDIR}/xxx.psp
+gpsbabel -i psp -f ${TMPDIR}/xxx.psp -o gpx -F ${TMPDIR}/psp2.gpx
+compare ${TMPDIR}/psp1.gpx ${TMPDIR}/psp2.gpx
--- /dev/null
+
+# QuoVadis GPS for PalmOS
+# This test is derived from the Cetus test.
+rm -f ${TMPDIR}/quovadis.pdb ${TMPDIR}/quovadis.gpu ${TMPDIR}/quovadist.gpu
+gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o quovadis -F ${TMPDIR}/quovadis.pdb
+gpsbabel -i quovadis -f ${TMPDIR}/quovadis.pdb -o gpsutil -F ${TMPDIR}/quovadis.gpu
+gpsbabel -i quovadis -f ${REFERENCE}/quovadis.pdb -o gpsutil -F ${TMPDIR}/quovadist.gpu
+compare ${TMPDIR}/quovadist.gpu ${TMPDIR}/quovadis.gpu
+compare ${REFERENCE}/quovadis.gpu ${TMPDIR}/quovadis.gpu
+
--- /dev/null
+
+#
+# Radius filter
+#
+rm -f ${TMPDIR}/radius.csv
+gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc \
+ -x radius,lat=35.9720,lon=-87.1347,distance=14.7 \
+ -o csv -F ${TMPDIR}/radius.csv
+compare ${TMPDIR}/radius.csv ${REFERENCE}
+
--- /dev/null
+#
+# "Raymarine Waypoint File" tests
+#
+gpsbabel -i raymarine -f ${REFERENCE}/raymarine-sample.rwf -o gpx -F ${TMPDIR}/raymarine-sample.gpx
+compare ${REFERENCE}/raymarine-sample.gpx ${TMPDIR}/raymarine-sample.gpx
+gpsbabel -i gpx -f ${REFERENCE}/expertgps.gpx -o raymarine -F ${TMPDIR}/expertgps.rwf
+compare ${REFERENCE}/expertgps.rwf ${TMPDIR}/expertgps.rwf
--- /dev/null
+
+#
+# saroute covers *.anr, *.rte, and *.rtd, but I only have an .anr for testing.
+# Unfortunately for us, this is a read-only format for now.
+#
+gpsbabel -t -i saroute -f ${REFERENCE}/track/i65.anr -o gpx -F ${TMPDIR}/gpl1.gpx
+gpsbabel -t -i gpx -f ${REFERENCE}/track/i65.anr.gpx -o gpx -F ${TMPDIR}/gpl2.gpx
+compare ${TMPDIR}/gpl1.gpx ${TMPDIR}/gpl2.gpx
+
--- /dev/null
+#
+# SBP tracks (Locosys NaviGPS)
+#
+gpsbabel -t -i sbp -f ${REFERENCE}/track/datalog.sbp -o gpx -F ${TMPDIR}/datalog.gpx
+compare ${REFERENCE}/track/datalog.gpx ${TMPDIR}/datalog.gpx
+
--- /dev/null
+#
+# simplify, option 'relative'
+#
+gpsbabel -i gpx -f ${REFERENCE}/track/simplify-relative.gpx -x simplify,relative,count=33 -o gpx -F ${TMPDIR}/simplify-relative2.gpx
+compare ${REFERENCE}/track/simplify-relative2.gpx ${TMPDIR}/simplify-relative2.gpx
+
--- /dev/null
+#
+# Simplify filter
+#
+rm -f ${TMPDIR}/simplify.txt
+gpsbabel -r -i gpx -f ${REFERENCE}/route/route.gpx \
+ -x simplify,count=10 \
+ -o arc -F ${TMPDIR}/simplify.txt
+compare ${REFERENCE}/simplify_output.txt ${TMPDIR}/simplify.txt
+
--- /dev/null
+#
+# Skyforce ascii files
+#
+gpsbabel -i skyforce -f ${REFERENCE}/skyforce_wpt.txt -o gpx -F ${TMPDIR}/skyforce_wpt.gpx
+compare ${REFERENCE}/skyforce_wpt.gpx ${TMPDIR}/skyforce_wpt.gpx
+gpsbabel -i skyforce -f ${REFERENCE}/route/skyforce_rte.txt -o gpx -F ${TMPDIR}/skyforce_rte.gpx
+compare ${REFERENCE}/route/skyforce_rte.gpx ${TMPDIR}/skyforce_rte.gpx
+gpsbabel -i skyforce -f ${REFERENCE}/track/skyforce_trk.txt -o gpx -F ${TMPDIR}/skyforce_trk.gpx
+compare ${REFERENCE}/track/skyforce_trk.gpx ${TMPDIR}/skyforce_trk.gpx
+
+gpsbabel -i skyforce \
+ -f ${REFERENCE}/skyforce_wpt.txt \
+ -f ${REFERENCE}/route/skyforce_rte.txt \
+ -f ${REFERENCE}/track/skyforce_trk.txt -o gpx -F ${TMPDIR}/skyforce.gpx
+compare ${REFERENCE}/skyforce.gpx ${TMPDIR}/skyforce.gpx
+
--- /dev/null
+#
+# Sportsim style-sheet
+#
+rm -f ${TMPDIR}/sportsim*
+gpsbabel -i gpx -f ${REFERENCE}/expertgps.gpx -x nuketypes,waypoints,routes -o sportsim -F ${TMPDIR}/sportsim.txt
+compare ${REFERENCE}/track/sportsim-sample.txt ${TMPDIR}/sportsim.txt
--- /dev/null
+
+#
+# STMwpp "Suunto Trek Manager" WaypointPlus format tests
+#
+rm -f ${TMPDIR}/stmwpp-*
+gpsbabel -i stmwpp -f ${REFERENCE}/track/stmwpp-track.txt -o gpx -F ${TMPDIR}/stmwpp-track.gpx
+compare ${REFERENCE}/track/stmwpp-track.gpx ${TMPDIR}/stmwpp-track.gpx
+gpsbabel -i stmwpp -f ${REFERENCE}/route/stmwpp-route.txt -o gpx -F ${TMPDIR}/stmwpp-route.gpx
+compare ${REFERENCE}/route/stmwpp-route.gpx ${TMPDIR}/stmwpp-route.gpx
+gpsbabel -i stmwpp -f ${REFERENCE}/route/stmwpp-route.txt -o stmwpp -F ${TMPDIR}/stmwpp-route.txt
+compare ${REFERENCE}/route/stmwpp-route.txt ${TMPDIR}/stmwpp-route.txt
+
--- /dev/null
+#
+# tef "TourExchangeFormat" read test
+#
+rm -f ${TMPDIR}/tef_xml*
+gpsbabel -i tef -f ${REFERENCE}/route/tef_xml.sample.xml -o gpx -F ${TMPDIR}/tef_xml.sample.gpx
+compare ${REFERENCE}/route/tef_xml.sample.gpx ${TMPDIR}/tef_xml.sample.gpx
+
--- /dev/null
+# tmpro (TopoMapPro Places) file format
+rm -f ${TMPDIR}/topomappro.txt ${TMPDIR}/mxf.mxf
+gpsbabel -i tmpro -f ${REFERENCE}/topomappro.txt -o tmpro -F ${TMPDIR}/tmp.txt
+gpsbabel -i tmpro -f ${TMPDIR}/tmp.txt -o tmpro -F ${TMPDIR}/topomappro.txt
+compare ${TMPDIR}/topomappro.txt ${REFERENCE}
+
--- /dev/null
+#
+# TomTom .ov2 tests
+#
+
+rm -f ${TMPDIR}/ov2.out
+gpsbabel -i arc -f ${REFERENCE}/google.arc -o tomtom -F ${TMPDIR}/ov2.out
+compare ${REFERENCE}/ov2-arc-out.ref ${TMPDIR}/ov2.out
+
+rm -f ${TMPDIR}/ov2.out
+gpsbabel -i geo -f ${REFERENCE}/gl.loc -o tomtom -F ${TMPDIR}/ov2.out
+compare ${REFERENCE}/ov2-geo-out.ref ${TMPDIR}/ov2.out
+
+rm -f ${TMPDIR}/ov2.out
+gpsbabel -i tomtom -f ${REFERENCE}/ov2-geo-out.ref -o gpsutil -F ${TMPDIR}/ov2.out
+compare ${REFERENCE}/ov2-in.ref ${TMPDIR}/ov2.out
--- /dev/null
+
+#
+# TomTom Navigator Places of Interest (.asc)
+#
+gpsbabel -i tomtom_asc -f ${REFERENCE}/tomtom_poi.asc -o tomtom_asc -F ${TMPDIR}/tomtom_poi.asc
+compare ${REFERENCE}/tomtom_poi.asc ${TMPDIR}/tomtom_poi.asc
+
--- /dev/null
+#
+# TomTom Navigator Itinerary files (.asc)
+#
+gpsbabel -i tomtom_itn -f ${REFERENCE}/route/tomtom_itn.itn -o tomtom_itn -F ${TMPDIR}/tomtom_itn.itn
+compare ${REFERENCE}/route/tomtom_itn.itn ${TMPDIR}/tomtom_itn.itn
+
--- /dev/null
+
+#
+# Columbus/Visiontac V900 "binary" csv files
+#
+gpsbabel -i v900 -f ${REFERENCE}/v900_basic_mode.csv -o gpx -F ${TMPDIR}/v900_basic_mode.gpx
+compare ${REFERENCE}/v900_basic_mode.gpx ${TMPDIR}/v900_basic_mode.gpx
+gpsbabel -i v900 -f ${REFERENCE}/v900_advanced_mode.csv -o gpx -F ${TMPDIR}/v900_advanced_mode.gpx
+compare ${REFERENCE}/v900_advanced_mode.gpx ${TMPDIR}/v900_advanced_mode.gpx
+
--- /dev/null
+# VidaOne track logs
+gpsbabel -i vidaone -f ${REFERENCE}/track/vidaone.gpb -t -o unicsv -F ${TMPDIR}/vidaone.csv
+compare ${REFERENCE}/track/vidaone.csv ${TMPDIR}/vidaone.csv
+
--- /dev/null
+#
+# Vito Navigator II .smt tests
+#
+rm -f ${TMPDIR}/vitosmt*
+gpsbabel -i vitosmt -f ${REFERENCE}/vitosmt.smt -o gpx -F ${TMPDIR}/vitosmt.gpx
+compare ${REFERENCE}/vitosmt.gpx ${TMPDIR}/vitosmt.gpx
+gpsbabel -t -i vitosmt -f ${REFERENCE}/vitosmt.smt -o gpx -F ${TMPDIR}/vitosmt_t.gpx
+compare ${REFERENCE}/track/vitosmt_t.gpx ${TMPDIR}/vitosmt_t.gpx
+
--- /dev/null
+#
+# Wfff.
+#
+gpsbabel -i wfff -f ${REFERENCE}/wfff.xml -o gpsutil -F ${TMPDIR}/wfff.gpu
+compare ${REFERENCE}/wfff.gpu ${TMPDIR}/wfff.gpu
+
--- /dev/null
+
+# XCSV
+# Test that we can parse a style file, and read and write data in the
+# same xcsv format (a complete test is virtually impossible).
+echo "RECORD_DELIMITER NEWLINE" > ${TMPDIR}/testo.style
+echo "FIELD_DELIMITER COMMA" >> ${TMPDIR}/testo.style
+echo "BADCHARS COMMA" >> ${TMPDIR}/testo.style
+echo "PROLOGUE Header" >> ${TMPDIR}/testo.style
+echo "EPILOGUE Footer" >> ${TMPDIR}/testo.style
+echo "IFIELD SHORTNAME,,%s" >> ${TMPDIR}/testo.style
+echo "IFIELD LAT_DIRDECIMAL,,%c%lf" >> ${TMPDIR}/testo.style
+echo "IFIELD LON_DECIMALDIR,,%lf%c" >> ${TMPDIR}/testo.style
+rm -f ${TMPDIR}/xcsv.geo ${TMPDIR}/xcsv.xcsv
+gpsbabel -i geo -f ${REFERENCE}/../geocaching.loc -o xcsv,style=${TMPDIR}/testo.style -F ${TMPDIR}/xcsv.geo
+gpsbabel -i xcsv,style=${TMPDIR}/testo.style -f ${TMPDIR}/xcsv.geo -o xcsv,style=${TMPDIR}/testo.style -F ${TMPDIR}/xcsv.xcsv
+compare ${TMPDIR}/xcsv.geo ${TMPDIR}/xcsv.xcsv
+
--- /dev/null
+
+#
+# Delorme TopoUSA 4 is a CSV strain.
+#
+rm -f ${TMPDIR}/xmap-1.gpx ${TMPDIR}/xmap-2.gpx ${TMPDIR}/xmap
+gpsbabel -i xmap -f ${REFERENCE}/xmap -o xmap -F ${TMPDIR}/xmap
+gpsbabel -i xmap -f ${REFERENCE}/xmap -o gpx -F ${TMPDIR}/xmap-1.gpx
+gpsbabel -i xmap -f ${TMPDIR}/xmap -o gpx -F ${TMPDIR}/xmap-2.gpx
+compare ${TMPDIR}/xmap-1.gpx ${TMPDIR}/xmap-2.gpx
+compare ${REFERENCE}/xmap ${TMPDIR}/xmap